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...
}