Come ottenere il numero di linea utilizzando lo scanner
-
19-09-2019 - |
Domanda
sto usando scanner per leggere una riga di file di testo per riga, ma poi come ottenere il numero di riga dal itera scanner per ogni ingresso Il mio programma è qualcosa di simile:?
s = new Scanner(new BufferedReader(new FileReader("input.txt")));
while (s.hasNext()) {
System.out.print(s.next());
Questo funziona bene ma per esempio:
1,2,3 3,4,5
Vorrei sapere il numero di riga di essa che significa 1,2,3 è in linea 1 e 3,4,5 è in linea 2.How posso ottenere che?
Soluzione
È possibile utilizzare un LineNumberReader
posto del BufferedReader
per tenere traccia del numero di riga mentre lo scanner fa la sua cosa.
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());
}
}
Nota. La soluzione "ovvio" ho postato non funziona come lo scanner legge in vista del token corrente
r = new LineNumberReader(new FileReader("input.txt"));
s = new Scanner(r);
while (s.hasNext()) {
System.out.println("Line " + r.getLineNumber() + ": " + s.next());
}
Altri suggerimenti
Basta mettere un contatore nel ciclo:
s = new Scanner(new BufferedReader(new FileReader("input.txt")));
for (int lineNum=1; s.hasNext(); lineNum++) {
System.out.print("Line number " + lineNum + ": " + s.next());
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow