3 Stimmen

Warum wirft Integer.parseInt eine NumberFormatException auf Eingaben, die gültig zu sein scheinen?

Ich mache gerade eine einfache Übung aus einem Buch und bin ein wenig verwirrt, wie die Java-Funktion parseInt funktioniert. Ich habe eine Zeile aus einer Eingabedatei gelesen, den StringTokenizer verwendet, um sie aufzuteilen, und jetzt möchte ich jeden Teil als Ganzzahl parsen.

Ich habe im Überwachungsfenster überprüft, dass die Eingabe der Funktion parseInt tatsächlich eine Zeichenkette ist, die eine gültige ganze Zahl zu sein scheint (z. B. "35"). Wenn ich jedoch versuche, die Funktion str.charAt Funktion auf meine Variable str Wenn ich den Wert "35" beibehalte, erhalte ich seltsame Ergebnisse:

str.charAt(0) == ""
str.charAt(1) == "3"
str.charAt(2) == ""
str.charAt(3) == "5"

Dies scheint ein Problem zu sein, das wahrscheinlich mit der Kodierung zusammenhängt, also habe ich versucht, es mit dieser Art des Lesens der Datei zu beheben:

InputStreamReader reader = new InputStreamReader(new FileInputStream(inputfile), "UTF-8");

(Ich habe die Datei explizit mit UTF-8-Kodierung in meinem Editor gespeichert), aber das hat nicht geholfen. Irgendwelche Ideen, was das Problem sein könnte und wie man es beheben kann?

EDIT: Mein Beispiel

        InputStreamReader reader = new InputStreamReader(new FileInputStream(inputfile), "UTF-8");
        BufferedReader bfreader = new BufferedReader(reader);

        line = bfreader.readLine();
        while (line !=null)
        {
                String[] valueStrings = line.split(" ");
                String hole = valueStrings[0]; 

                int[] values = new int[4];
                for (int i = 0; i <values.length; i++){

                    String nr = valueStrings[i+1].trim(); 
                    values [i] = Integer.parseInt(nr);
                }

                // it breaks at the parseInt here, the rest is not even executed...

         }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X