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?

¿Fue útil?

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
scroll top