Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe ein Programm, bei dem ein Benutzer zur Eingabe einer Integer aufgefordert wird. Wie kann ich nun überprüfen, ob der Benutzer was eingegeben hat?
Wenn ich sowas mache:
Java:
int eingabe = benutzereingane;
if (eingabe == null) {ausüben}
dann meckert Eclipse, dass der ==Operator für int, null nicht verfügbar wäre.
Hallo.
Wie du schon sagst, ein int kann nicht null sein, weil int kein Objekt ist.
Da der User wahrscheinlich über ein Textfeld ein Integer eingeben soll (denke ich mal), kannst du ja mit der Abfrage
Java:
if(myTextFeld.getText().length() == 0) // keine Eingabe!
oder, wenn du verhindern willst, dass auch normale Strings, also Nichtzahlen eingegeben werden:
Java:
int eingabe;
try{ eingabe = Integer.parseInt(myTextField.getText()); }
catch(NumberFormatException e)
{ myLabel.setText("Bitte Zahl eingeben!"); }
öhm....bitte? soweit sind wir noch nicht...ist auch gerade eher die kür einer übungsaufgabe und nicht mehr teil des aufgabe. war halt persönliche neugier. danke trotzdem.
Dann MUSS sie auch ein [c]int[/c] zurückgeben ODER eine Exception werfen. [c]null[/c] ist nicht möglich. Also musst du mal sehn wie GraphicIO in dem Fall arbeitet (z.B. return 0 oder einen anderen default Wert) wenn das Dialog Fenster weggeklickt wird. Einfach ausprobieren.
Java:
int eingabe = GraphicIO.readInt("Bitte geben sie eine Zahl ein");
System.out.println(eingabe);
Dann ausführen und Dialog Fenster wegklicken. Was steht nun auf der Konsole?
Und dann? Ist das Programm beended? Gibt es dir eine weitere Chance? ...
Ist doch alles gut. GraphicIO erkennt das du kein int eingegeben hast und lässt dich nicht weitermachen. Sprich du musst nicht in deinem Code prüfen ob es eine gültige Eingabe gab oder nicht.
String eingabe = GraphicIO.readString("geben sie einen wert ein ");
int wert;
if(eingabe==null){
System.out.pritnln("ungültige eingabe");
} else{wert=Integer.parseInt(eingabe);
}
somit hast den wert dann auch als primitiven Datentypen Integer. sollte funktionieren .
Oder man setzt den wert des int vorher auf zb -1 und prueft dann ob der wert sich geaendert hat oder immernoch -1 is... Dann kann man halt nurnet -1 eingebe
Oder man setzt den wert des int vorher auf zb -1 und prueft dann ob der wert sich geaendert hat oder immernoch -1 is... Dann kann man halt nurnet -1 eingebe
Nein, ist definitiv nicht "elegant". Was ist wenn der User -1 eingeben will? Elegant ist was anderes als genau einen Wert zu blacklisten...
Wie ich schon oben sagte: Die Funktion MUSS eine int zurückgeben oder eine Exception werfen. Irgendwelche faulen defaults auswerten musst du nicht in deiner Anwendung. Du kannst dich drauf verlassen das GraphicIO dir einen gültigen Wert übergibt. Den kannst du natürlich noch validieren, z.B. testen ob der Wert in einem von dir definierten Gültigkeitsbereich liegt - aber du musst, bzw kannst nicht verifizieren ob [c]null[/c] übergeben wurde - [c]GraphicIO.readInt[/c] kann NIEMALS [c]null[/c] zurückgeben.
Doch, in diesem Fall ist es die eleganteste Lösung, weil Eingaben vom User, die kleiner als 1 sind, abgefangen werden und er solange zu einer neuen Eingabe aufgefordert wird, bis eine gültige Eingabe erfolgt ist.