Java: Prüfen ob ein Array "null" ist?
Hallo, ich habe in Java einen String[] dessen Wert über Usereingaben ins Programm festgelegt wird. Dabei kann der Wert auch leer sein und dann crasht es immer mit dem Fehler "java.lang.NullPointerException". Ich habe mir dafür schon eine Lösung überlegt dass ich prüfe ob der Wert null ist und wenn ja wird der wert zu "default" geändert. Aber wenn ich das überprüfen möchte crasht es wieder wegen java.lang.NullPointerException weil ich ja versuche darauf zuzugreifen.
//Ich habe es auch schon mit equals und isEmpty probiert
if (user_input[0]==null) { //Fehlerzeile
user_input="default";
}
java.lang.NullPointerException
Wie kann ich das überprüfen ohne dass es crasht?
LG
2 Stimmen
5 Antworten
if (user_input == null) { //Fehlerzeile
user_input=new String[1];
}
if (user_input[0]==null) { //Fehlerzeile
user_input[0]="default";
}
Leer sein ist nicht dasselbe wie Nichtsein.
Zum Beispiel: Wenn du keine Börse hast, dann kannst du kein Geld davon ausnehmen. Wenn du eine leere Börse hast, dann kannst du checken, dass sie tatsächlich leer ist, und keine Werte hat.
Hier wird ein int[] geprüft, und demonstriert zwischen Nichtsein und leer Sein:
https://stackoverflow.com/questions/2369967/how-can-i-check-whether-an-array-is-null-empty
Du würdest du aber ein String Array benutzen. Das steht näher zu deinem Problem und seiner Lösung:
https://stackoverflow.com/questions/22162231/empty-check-with-string-array
Wenn das Objekt null ist, kannst du auch keinen Indexer darauf anwenden.
Prüfe so:
if (user_input == null || user_input[0] == null) {
Beachte im Übrigen, dass du den Datentyp der Variable nicht dynamisch ändern kannst. Wenn user_input ein Array ist, kannst du ihm keinen String zuweisen.
Hallo, ich habe in Java einen String[]
Also ein Array von Strings, deklariert z.B. als
String[] user_input = new String[20]; // für 20 Eingaben
dessen Wert über Usereingaben ins Programm festgelegt wird.
Wie machst du das? Holst du dir die Strings von der Konsole, über ein Scanner-Objekt? Oder fragst du ein Feld aus einem GUI-Objekt ab?
Wie produzierst du eine leere Eingabe?
Wenn user_input nicht wie oben einmal mit new erzeugt wurde, kann das eigentlich gar nicht (nicht nur manchmal) funktionieren.
Zeig mal etwas mehr von deinem Code.
Wo nichts ist, kannst du auch keinen Index [0] anwenden. Nicht user_input[0] (also das erste Element des Arrays user_input) ist null, sondern user_input selbst ist null (und damit kein Array).
Du musst daher prüfen, ob das Objekt selbst null ist:
if (user_input == null) {
...
}