Comment obtenir le numéro de ligne en utilisant le scanner
-
19-09-2019 - |
Question
J'utilise scanner pour lire une ligne de fichier texte en ligne, mais alors comment obtenir le numéro de ligne depuis itère scanner à travers chaque entrée Mon programme est quelque chose comme ceci:
s = new Scanner(new BufferedReader(new FileReader("input.txt")));
while (s.hasNext()) {
System.out.print(s.next());
Cela fonctionne très bien, mais par exemple:
1,2,3 3,4,5
Je veux savoir le numéro de la ligne de ce qui signifie 1,2,3 est en ligne 1 et 3,4,5 est en ligne 2.How dois-je obtenir?
La solution
Vous pouvez utiliser un LineNumberReader
place du BufferedReader
de garder une trace du numéro de la ligne pendant que le scanner fait son travail.
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());
}
}
Remarque:. La solution "évidente" j'ai posté ne fonctionne pas comme le scanner lit en avance sur le jeton courant
r = new LineNumberReader(new FileReader("input.txt"));
s = new Scanner(r);
while (s.hasNext()) {
System.out.println("Line " + r.getLineNumber() + ": " + s.next());
}
Autres conseils
Il suffit de mettre un compteur dans la boucle:
s = new Scanner(new BufferedReader(new FileReader("input.txt")));
for (int lineNum=1; s.hasNext(); lineNum++) {
System.out.print("Line number " + lineNum + ": " + s.next());
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow