Frage

?

Ich bin mit Scanner eine Textdatei Zeile für Zeile zu lesen, aber dann, wie durch jede Nummer der Eingangsleitung seit Scanner Iterierten zu bekommen Mein Programm ist so etwas wie folgt aus:

s = new Scanner(new BufferedReader(new FileReader("input.txt")));

while (s.hasNext()) {
System.out.print(s.next());

Das funktioniert gut, aber zum Beispiel:

1,2,3 
3,4,5

Ich mag Zeilennummer davon wissen, welche Mittel 1,2,3 in Zeile 1 und 3,4,5 ist in Zeile 2.How kann ich das?

War es hilfreich?

Lösung

könnten Sie ein LineNumberReader anstelle der BufferedReader Spur der Zeilenzahl zu halten, während der Scanner seine Sache tut.

LineNumberReader r = new LineNumberReader(new FileReader("input.txt"));
String l;

while ((l = r.readLine()) != null) {
    Scanner s = new Scanner(l);

    while (s.hasNext()) {
        System.out.println("Line " + r.getLineNumber() + ": " + s.next());
    }
}

. Hinweis: Die "offensichtliche" Lösung, die ich geschrieben ersten nicht funktioniert wie der Scanner liest vor den aktuellen Token

r = new LineNumberReader(new FileReader("input.txt"));
s = new Scanner(r);

while (s.hasNext()) {
    System.out.println("Line " + r.getLineNumber() + ": " + s.next());
}

Andere Tipps

Setzen Sie einfach einen Zähler in der Schleife:

s = new Scanner(new BufferedReader(new FileReader("input.txt")));

for (int lineNum=1; s.hasNext(); lineNum++) {
   System.out.print("Line number " + lineNum + ": " + s.next());
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top