incomparable types

Lokke1

Mitglied
Hallo zusammen,

erstmal möchte ich mich vorstellen. Ich studiere Mechatronik an der FH-Bochum im 1. Semester und befasse mich diesbezüglich zwangsläufig mit der Programmierung von Java. Erst Schritte sind mir geläufig. Ich verstehe also Grundlagen wie deklaration, initialisierung, compilierung, typecasting etc. Mir macht es einen riesen Spaß bis zu dem Punkt, andem ich vor dem Pc hocke und dieser verflixte Code sich nicht mehr compilieren lässt :) Bis jetzt musste ich kleine Programme Schreiben, die mir über JOptionPane Eingabefenster und Ausgabefenster aufgerufen haben. Jetzt kombinieren wir Abfragen und Schleifen mit diesen Eingabefenstern, was bereits ein Problem für mich darstellt. In meiner Verzweifelung habe ich jetzt den Weg in dieses Forum gefunden und erhoffe mir hier Hilfestellungen bei, ich denke mal eher Kleinigkeiten für Leute vom Fach, aber unüberwindbare Hürden für mich :D

Ich programmiere auf Windows, welches ich auf meinen Mac aufgespielt habe. Ich benutze nur die Eingabeaufforderug. Eclipse ist noch nicht erlaubt.

Nun zu meinem Problem und zugleich zu meiner Frage.

Aufgabe:
Ein Eingabefenster mittels JOptionPane aufrufen. Fall 1: Ein Text wird eingegeben, er soll als String in einem Ausgabefenster ausgeworfen werden - Programm Ende. Fall 2: Es wird kein Text eingegeben, nun soll in der Konsole eine Fehlermeldung erscheinen. Darauf folgt die abfrage mittels if/else if ob auf "OK" oder auf "Abbrechen" geklickt wurde. Das Resultat der abfrage soll ebenfalls in der Konsole ausgegeben werden.

Mein Code dazu:
Java:
import javax.swing.*;
public class PraktiZwei{

   public static void main(String[] args){
      String vorName = JOptionPane.showInputDialog("Bitte geben Sie ihren Vornamen an");
      int vor = Integer.parseInt(vorName);
         if(vorName == null){
            System.out.println("FEHLER");

            if(vor == 0){

               System.out.println("Es wurde kein Vorname eingetragen");
            }
            else if(vorName == null){
               System.out.println("Es wurde 'Abbrechen' gedrückt");
            }
        }
   }
}
Beim Kompilieren gibt es erstmal keine Probleme. Führe ich das Programm nun aus, wirft er mir diese Exception:
Code:
Exception in thread "main" java.lang.NumberFormatException: null
  at java.lang.Integer.parseInt(Unknown Source)
  at java.lang.Integer.parseInt(Unknown Source)
  at PraktiZwei.main(PraktiZwei.java:8)
Ich bitte zu entschuldigen! Ich weiß nicht wie ich "Syntaxhighlighting-Tags" aufrufe :( (Bitte auch dies zu beantworten, so werde ich es in Zukunft selbstverständlich berücksichtigen)!

Einen schönen Start in die Woche wünsche ich.
Bedanke mich schonmal für eure (hoffentlich) hilfreiche Antwort :D.

Liebe Grüße,
Lokke
 
Zuletzt bearbeitet von einem Moderator:

Madlip

Bekanntes Mitglied
Warum willst du den String zu einem int umwandeln?

Code:
int vor = Integer.parseInt(vorName);

Das was du versuchen möchtest sollte so aussehen:

Code:
if(vorName.length() == 0){

System.out.println("Es wurde kein Vorname eingetragen");
}

Blanks (Leerzeichen) werden von length() gezählt. Von daher würde ich dir folgendes empfehlen, um zu prüfen ob der Benutzer etwas eingeben hat:

Code:
if(vorName.trim().isEmpty()){

System.out.println("Es wurde kein Vorname eingetragen");
}
 
Zuletzt bearbeitet:

Elenteria

Bekanntes Mitglied
Hallo Lokke,
Eine NumberFormatException heißt dass du versuchst einen String in einen Numerischen Datentyp zu konvertieren und dass dabei ein Fehler aufgetreten ist weil der String keine Zahl repräsentiert bzw. das falsche Format hat.
Bei dir passiert das an der Stelle
Java:
int vor = Integer.parseInt(vorName);
Du versuchst an der Stelle den eingegebenen Namen nach Integer zu Konvertieren. Versuch mal selber z.B. "Charlie" in eine Zahl umzuwandeln. Merkste selber wird schwierig ;-) An dieser Stelle ist das auch gar nicht nötig. Du versuchst mittels parsen herrauszufinden ob eine Vorname eingegeben wurde, das kannst du aber bequem über Methoden der String-Klassen herrausfinden.
Java:
//Variante 1
if(vorName.equals("")) {
//tu was du tun must.
}

//variante 2
if(vorName.isEmpty()) {
}

//Varianten 3
if(vorName.length() == 0) {
}

Für den Code kannst du die Code-Tags verwenden einfach [code = java] (ohne leerzeichen) [/code]

Gruß
Elenteria
 

Lokke1

Mitglied
Fall 1 ist gelöst:
Java:
  if(vorName.isEmpty()){
  System.out.println("FEHLER");
  }
  if(vorName.equals("")){
 
  System.out.println("Es wurde kein Vorname eingetragen");
  }

Jedoch will meine Holzbirne nicht die richtige Lösung für Fall 2. auswerfen :( Im 2. Fall muss ich ja lediglich abfragen ob der String überhaupt initialisiert ist, da er durch "abbrechen" ja erst garnicht belegt wird. Dem Informatik-Script der Hochschule entnehme ich: "String str; Der Wert des Strings str ist null, str ist nicht mit einem Wert belegt."
Frage ich jetzt "if(vorName == null)" wirft er mir mal wieder eine Exception die wie folgt lautet: "Exception in thread main java.lang.NullPointerException". Mit jeder anderen Variante passiert das gleiche. "vorName.equals(null)" habe ich auch ausprobiert.

An dieser Stelle beginnt das Gefühl von absoluter Dummheit in mir zu wachsen ...
 

Madlip

Bekanntes Mitglied
Das kann nicht sein das du eine Nullpointer bekommst wenn du
Code:
if(vorName == null)
verwendest.

So wie dein Code da oben steht, kann es durch aus sein das du eine NullPointer bekommst, weil er halt auf einen "null"-Objekt keine Methoden aufrufen kann.
 

Lokke1

Mitglied
Also ausprobiert habe ich jetzt diesen Code:
Java:
import javax.swing.*;
public class PraktiZwei{
  public static void main(String[] args){
  String vorName = JOptionPane.showInputDialog("Bitte geben Sie ihren Vornamen an");
  if(vorName.isEmpty()){
  System.out.println("FEHLER");
  }
  
  if(vorName.equals("")){
  System.out.println("Es wurde kein Vorname eingetragen");
  }
  
  
  else if(vorName == null){
  System.out.println("Es wurde 'Abbrechen' gedrückt");
  }
  
  else{
  JOptionPane.showMessageDialog(null, vorName);
  }  
  
}
}

Klick auf "OK" = wie gewünscht Fehlermeldung und "es wurde kein Vorname eingegeben".
Klick auf "Abbruch":

Exception in thread "main" java.lang.NullPointerException
at PraktiZwei.main(PraktiZwei.java:9)


Leider gibt es mir genau so eine NullPointerException :(
 

Elenteria

Bekanntes Mitglied
Das liegt daran das du in der falschen Reihenfolge prüfst.
Als erstes musst prüfst du ob das Objekt null ist und dann den Rest.
Java:
if(vorName == null) {

}
else if (vorName.isEmpty) {

}
// was auch immer du noch prüfen willst
 

Lokke1

Mitglied
Ich habe zum testen mal das folgende ausprobiert:

Java:
import javax.swing.*;
public class Neu{
  public static void main(String[] args){
  String vorName = JOptionPane.showInputDialog("Bitte geben Sie ihren Vornamen an");
  System.out.println(vorName.isEmpty());
}
}

Wenn ich jetzt einen Vornamen eingebe, erscheint "false". Gehe ich auf "Abbrechen" kommt wieder:

Exception in thread "main" java.lang.NullPointerException
at PraktiZwei.main(PraktiZwei.java:9)

Wenn ich hinterher den wert (nicht vorhandenen Wert) vom vorNamen ausgeben will, kommt immer diese doofe NullPointException. Der Laptop ist kurz davor soweit es geht aus dem Fenster zu fliegen ...
 

Madlip

Bekanntes Mitglied
Du kannst an einem NULL-Objekt kein Methode aufrufen. Da habe ich vorhin schon geschrieben und Elenteria hat es auch geschrieben! Befolge einfach den Code von Elenteria.
 

Elenteria

Bekanntes Mitglied
Wenn ich dir ein "Nichts" geben und dir sag mach was damit z.B. sag mir wie groß ist das, wirst du das auch nicht können. Genauso verhält es sich hier auch. Durch das Abbrechen bekommst du null zurückgeliefert. Null ist in Java nicht 0 sondern quasi das "Nichts". Jetzt bekommst du null zurück und willst dann wissen wie groß das ist, das kann natürlich nicht funktionieren. Darum einfach immer erst auf null prüfen wo null-werte auftreten können und keine unschuldigen Laptops aus Fenstern fliegen lassen ;-)
 

Lokke1

Mitglied
Ich habe nun wirklich alles mir erdenklich mögliche probiert, es hilft mir nicht weiter. Diese Aufgabe ist für mich nicht zu bewältigen. Ich kann die Fälle einzeln abfragen, aber sobald ich erst überprüfen will ob überhaupt was eingegeben wurde, funktioniert nichts mehr. o_O

Trotzdem danke für eure Hilfe.
 

Joose

Top Contributor
Ich kann die Fälle einzeln abfragen, aber sobald ich erst überprüfen will ob überhaupt was eingegeben wurde, funktioniert nichts mehr.

"funktioniert nichts mehr" ist keine Fehlerbeschreibung.
Du musst uns schon genauer sagen/beschreiben was du nicht verstehst, nur so können wir dir helfen.

Solltest du immer noch an der NullPointerException hängen -> Deine Abfragen stimmen ja, nur die Reihenfolge ist falsch. Zuerst muss man bei sowas immer überprüfen ob die Variable mit welcher man arbeitet auf ein Objekt zeigt oder eben nichts. Das erreicht man mittels " == null" bzw. "!= null".

Java:
String vorName = JOptionPane.showInputDialog("Bitte geben Sie ihren Vornamen an");

if(vorName == null) {
   System.out.println("Es wurde 'Abbrechen' gedrückt");
} else if(vorName.isEmpty()) {
   System.out.println("FEHLER");
} else if(vorName.equals("")) {
   System.out.println("Es wurde kein Vorname eingetragen");
} else {
   JOptionPane.showMessageDialog(null, vorName);
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F java: incompatible types: possible lossy conversion from double to int Java Basics - Anfänger-Themen 1
Elyt Error: incompatible types Java Basics - Anfänger-Themen 3
R Operatoren Bad operand types for binary operator Java Basics - Anfänger-Themen 4
L Operatoren error: bad operand types for binary operator && Java Basics - Anfänger-Themen 8
I bad operand types for binary operator > Java Basics - Anfänger-Themen 5
H Operatoren Fehler bad operand types for binary operator Java Basics - Anfänger-Themen 7
UnityFriday method getPrevious in class List<ContentType> cannot be applied to given types Java Basics - Anfänger-Themen 29
D incompatible Types Problem in Greenfoot Java Basics - Anfänger-Themen 5
J Grundsätzliche Frage zu return Types in Methoden Java Basics - Anfänger-Themen 6
B Map, basic types & Object Java Basics - Anfänger-Themen 5
A error: incompatible types Java Basics - Anfänger-Themen 9
J Java Generics - Frage zu Types Java Basics - Anfänger-Themen 2
Q Compiler-Fehler Incompatible types bei ArrayList.get Java Basics - Anfänger-Themen 3
J bad operand types for binary operator Java Basics - Anfänger-Themen 3
D Compiler-Fehler incompatible types bei einer Stelle Java Basics - Anfänger-Themen 34
W Compiler-Fehler Inconvertible Types Java Basics - Anfänger-Themen 3
E incompatible types bei eigenen Klassen Java Basics - Anfänger-Themen 7
T Unconvertible types für Tastatureingabe? Java Basics - Anfänger-Themen 20
F inconvertible types hilfe Java Basics - Anfänger-Themen 9
S Hilfe - java.lang.RuntimeException: Uncompilable source code - incompatible types Java Basics - Anfänger-Themen 10
G super operator und incompatible types, simple fehler Java Basics - Anfänger-Themen 8
C HashMap liefert HashMap zurück - incompatible types Java Basics - Anfänger-Themen 2
R Incompatible operand types Integer and int Java Basics - Anfänger-Themen 2
J int temp = (int) it.next(); -> inconvertible types? Waru Java Basics - Anfänger-Themen 3
S Fehlermeldung : "incompatible types" Java Basics - Anfänger-Themen 5
R incompatible types Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben