0

Ich versuche, eine Textdatei einzulesen und aus dieser Datei die Anzahl der Zeilen und Spalten zu ermitteln. Ich entschied mich, dies zu tun, indem ich die Eingabezeichenfolge in Tokens umwandelte und sie dann in eine Ganzzahl umwandelte, um Zeilen und Spalten zu finden. Wenn ich kompiliere, bekomme ich eine "java.lang.NumberFormatException.forInputString". Jede Erklärung, warum dieses Problem verursacht werden kann, wird sehr geschätzt. Vielen Dank.NumberFormatException beim Token einer Zeichenfolge und beim Konvertieren in eine Ganzzahl

BufferedReader inF = new BufferedReader(new FileReader(new File("/Users/marco/Desktop/5ele.txt"))); 
    String s = ""; 

    int row = 0; 
    int col = 0; 
    int z = 0; 

    while((s = inF.readLine()) != null){ 

     StringTokenizer st = new StringTokenizer(s, ""); 
     while(st.hasMoreTokens()){ 
      int convertedToInt = Integer.parseInt(st.nextToken()); //this is where the problem occurs 

      if (z == 0) { 
       row = convertedToInt; 
      } else if (z == 1) { 
       col = convertedToInt; 
      } 

      z++; 
     } 
    } 
  • ich auch ein Beispiel für die Textdatei verknüpft: Sample Text File

  • Beachten Sie, dass jedes Zeichen, ob es sich um eine Periode oder ein Brief kann als eine einzelne Zelle in einer Tabelle vorstellen Wenn Sie werden

  • Die Ausgabe, die ich in der Textdatei Beispiel suchen, ist 3 Zeilen und 10 Spalten.
+1

Sie analysieren die gesamte Zeile als Eingabe für 'Integer.parseInt()', da Sie 'new StringTokenizer (s," ");' verwenden, wobei das Trennzeichen eine leere Zeichenfolge ist. –

+0

Wie soll ich dieses Problem beheben? – user

+0

Wie genau meinen Sie, diese Eingabe in Ganzzahlen zu analysieren? Können Sie Ihre Frage mit dem geparsten Ergebnis für die von Ihnen bereitgestellte Beispieleingabe bearbeiten? – Mureinik

Antwort

0

Sie haben den StringTokenizer ohne Trennzeichen (leere Zeichenfolge im Konstruktor) eingerichtet. Dies bedeutet, dass Ihre Zeile nicht in Token aufgeteilt werden kann.

Wenn ich verstehe, was Sie versuchen, zu tun, müssen Sie den Code StringTokenizer (alles nach while((s = inF.readLine()) != null){) ersetzen, mit

z++; 
    col = s.length() 
} 
row = z; 

Diese z die Reihen geschlungen über zählen verwendet, und nimmt die Spaltenanzahl von der Schnurlänge.

+0

Ja, das funktioniert, vielen Dank. – user

+0

Gern geschehen; Bitte markieren Sie diese Antwort akzeptiert. Natürlich ist es schlampig, "Col" immer wieder zu setzen, wie ich es getan habe; Sie sollten überprüfen, dass 's.length()' immer den gleichen Wert hat. – GKFX

Verwandte Themen