Cómo obtener el número de línea mediante escáner
-
19-09-2019 - |
Pregunta
Estoy usando escáner para leer una línea de archivo de texto por línea, pero luego la forma de obtener el número de línea desde el escáner itera a través de cada entrada Mi programa es algo como esto:?
s = new Scanner(new BufferedReader(new FileReader("input.txt")));
while (s.hasNext()) {
System.out.print(s.next());
Esto funciona bien, pero por ejemplo:
1,2,3 3,4,5
Quiero saber el número de línea de la misma que significa 1,2,3 está en la línea 1 y la línea 3,4,5 está en 2.How puedo obtener eso?
Solución
Se puede usar un LineNumberReader
en lugar de la BufferedReader
para realizar un seguimiento del número de línea mientras el escáner hace su 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 solución "obvia" que por primera vez no funciona como el escáner lee por delante del token actual
r = new LineNumberReader(new FileReader("input.txt"));
s = new Scanner(r);
while (s.hasNext()) {
System.out.println("Line " + r.getLineNumber() + ": " + s.next());
}
Otros consejos
Sólo hay que poner un contador en el bucle:
s = new Scanner(new BufferedReader(new FileReader("input.txt")));
for (int lineNum=1; s.hasNext(); lineNum++) {
System.out.print("Line number " + lineNum + ": " + s.next());
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow