Como chegar número da linha com o scanner
-
19-09-2019 - |
Pergunta
?
Eu estou usando scanner para ler uma linha arquivo de texto por linha, mas, em seguida, como obter o número da linha desde itera do scanner através de cada entrada Meu programa é algo como isto:
s = new Scanner(new BufferedReader(new FileReader("input.txt")));
while (s.hasNext()) {
System.out.print(s.next());
Isso funciona bem, mas por exemplo:
1,2,3 3,4,5
Eu quero saber o número da linha dele que média 1,2,3 está na linha 1 e 3,4,5 está em linha 2.How que eu recebo isso?
Solução
Você pode usar um LineNumberReader
em lugar do BufferedReader
para acompanhar o número da linha enquanto o scanner faz sua coisa.
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:. A solução "óbvia" A primeira vez que postou não funciona como o scanner lê à frente do token atual
r = new LineNumberReader(new FileReader("input.txt"));
s = new Scanner(r);
while (s.hasNext()) {
System.out.println("Line " + r.getLineNumber() + ": " + s.next());
}
Outras dicas
Basta colocar um contador no loop:
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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow