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?

Était-ce utile?

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