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?

È stato utile?

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