Fehlermeldung: variable wird nicht initalisiert obwohl sie deklariert ist

ElDonRon

Mitglied
Hallo mal wieder zusammen,

nachdem mein eines Problem heute nachmittag schon sehr schnell gelöst wurde, brauche ich noch einmal Hilfe.

Der Code sieht foilgendermassen aus:

Java:
public class NumTest {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        String num = "123";

        System.out.println("Ergebnis: " +checkNummer(num));
    }

        public static boolean checkNummer (String num){

            boolean ok;
            
            for (int i = 0; i < num.length()-1; i++){
                Character.isDigit(num.charAt(i));
            }
            
            return ok;
        }
}

Problem ist, dass meine Entwicklunsumgebung (Netbeans) mir sagt, dass beim return, die variable ok nicht initalisiert wird. Alelrdings hab ich ja oben diese ja via boolean deklariere.

Ich finde diesen blöden fehler nicht, wieso der das nicht machen will. Hab ich eine klammer vergessen, Semikolon oder irgendetwas anderes?
 
die wird ja auch nicht initialisiert oder welchen Zustand hat die Variable beim return?

"boolean ok = true;" oder "boolean ok = false;" wäre eine Initialisierung.Allerdings wäre die Methode
dann ziemlich sinnfrei. 😉

Du kannst in der for-Schleife folgendes machen:
[Java]ok = Character.isDigit(num.charAt(i)); [/code]

allerdings gibt dann auch "aaaa1" true zurück und ich weiss nicht,
ob das in deinem Sinne ist.
 
Zuletzt bearbeitet:
Ach stimmt, das hatte ich vergessen.

Nein, das ist nicht in mienem Sinne. Es soll überprüft werden, ob der String nur Zahlen enthält. Wenn ein Literal dazwischen auftaucht oder es nur aus Literalen besteht, soll ein false zurück gegeben werden.

Edit:

Läuft aber trotzdem 😉

Java:
public class NumTest {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        String num = "12A3";

        System.out.println("Ergebnis: " +checkNummer(num));
    }

        public static boolean checkNummer (String num){

            boolean ok = true;

            for (int i = 0; i < num.length()-1; i++){
                 ok = Character.isDigit(num.charAt(i));
             }
            
            return ok;
        }
}

Liefert ein false zurück, wenn ein Buchstabe drin steht und mit Zahlen gibt es ein true zurück 🙂

EDIT2:

Ok Kommando zurück. Irgendetwas stimmt da nicht.

Gebe ich den Code so ein, wie er jetzt oben steht mit der Überprüfung der Zeichenfolge "12A3" erhalte ich ein false zurück.
Gebe ich nur Buchstaben ein auch.

Gebe ich allerdings "1A23" ein erhalte ich ein true zurück. Also irgendetwas passt da nicht.
 
Zuletzt bearbeitet:
Ach stimmt, das hatte ich vergessen.

Nein, das ist nicht in mienem Sinne. Es soll überprüft werden, ob der String nur Zahlen enthält. Wenn ein Literal dazwischen auftaucht oder es nur aus Literalen besteht, soll ein false zurück gegeben werden.

Edit:

Läuft aber trotzdem 😉

Java:
public class NumTest {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        String num = "12A3";

        System.out.println("Ergebnis: " +checkNummer(num));
    }

        public static boolean checkNummer (String num){

            boolean ok = true;

            for (int i = 0; i < num.length()-1; i++){
                 ok = Character.isDigit(num.charAt(i));
             }
            
            return ok;
        }
}

Liefert ein false zurück, wenn ein Buchstabe drin steht und mit Zahlen gibt es ein true zurück 🙂

Ist deine Funktion nicht eig. nur davon abhängig, was der letzte Char für n Typ ist? Also, bei 12A3 wäre es true und bei 123A wäre es false?!
 
Aber auch nur in deinem Beispiel-String,weil du die letzte Ziffer (i < num.length() - 1) nicht überprüfst. 😉
"12A34" gibt bei dir bestimmt true zurück.Du brauchst eine If-Anweisung in der Schleife.
 
Habt recht, hatte das aus einer alten Schleife raus kopiert und übersehn.

Gut dann halt mit if-Schleife, könnte ja manchmal auch zu schön sein 🙁
 

Zurück
Oben