Java: Überprüfen, ob ein JTextField leer ist?
Moin,
ich habe ein wahrscheinlich simples Problem.
Und zwar habe ich drei Textfelder und einen Button.
Wenn man den Button drückt, soll das, was in dem Textfeld steht, in der Konsole ausgegeben werden. Das geht auch bei allen Zahlen, aber wenn ich nichts in das Textfeld eingeben will, soll es 1 ausgeben. Dann jedoch kommt immer eine Fehlermeldung. Wie mache ich das?
Hier mein Code:
if (e.getSource() == rechnen) {
String texta = textfielda.getText(); // Der Wert, der für a eingegeben wurde
int a = Integer.parseInt(texta);
if (textfielda.getText().length() == 0)
a = 1;
String textb = textfieldb.getText();
int b = Integer.parseInt(textb);
if (textfieldb.getText().length() == 0)
b = 1;
String textc = textfieldc.getText();
int c = Integer.parseInt(textc);
if (textfieldc.getText().length() == 0)
c = 1;
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
3 Antworten
Ganz einfach :
if(textfielda.getText().isEmpty()){
// TextField leer
}else{
// TextField nicht leer
}
Diese Überprüfung solltest du bspw. innerhalb eines ActionListeners für z.B. einen Button einfügen.
In Android-Java geht es so :
if(TextUtils.isEmpty(textfielda)){
// TextField leer
}else{
// TextField nicht leer
}
So wie ich das sehe, ist die Reihenfolge falsch, in der du das Programm geschrieben hast, bzw. nicht falsch, sondern fehlerhaft.
Das Problem ist, dass du einen String initialisierst, der bei einer leeren Angabe auch leer ist. Wenn dieser leere String in einen Integer gecastet werden soll, dann kommt dabei eine Fehlermeldung, weil man ja nicht etwas leeres umwandeln kann.
Die Lösung ist also zum Beispiel:
int a = 0;
String texta = textfielda.getText();
if(textfielda.getText().length() == 0)
{
a = 1;
}
else
{
int a = Integer.parseInt(texta);
}
System.out.println(a);
Eventuell könntest du noch eine Überprüfung hinzufügen, ob überhaupt eine Zahl eingegeben wurde, schließlich kann ein String auch aus Buchstaben bestehen, die ebenfalls nicht gecastet werden können :D
else wird immer höchstens einmal ausgeführt, ist daher keine Schleife.
Ich meine natürlich Anweisung. Sry hatte das schnell am Handy geschrieben.
Es wäre hilfreich zu wissen, welche Fehlermeldung du bekommst ;)
Das ist offensichtlich, wenn man sich den Code anschaut :D
Die Fehlermeldung ist " java.lang.NumberFormatException"
Aber natürlich in der Else Schleife nicht nochmal a initialisieren :D