Je dispose d'un fichier journal contenant les données suivantes:problème en utilisant la nextLine() et hasNextLine() de scanner
Plus court chemin (2) :: RV3280-RV0973C-RV2888C
Plus court chemin (1): : RV3280-RV2502C
chemin le plus court (2) :: RV3280-RV2501C-RV1263
chemin le plus court (2) :: RV2363-Rv3285-RV3280
A partir de chaque ligne, le nombre i exige dans les crochets, le nom de la première protéine (RV3280 dans la première ligne) et le nom de la dernière protéine (RV2888C dans la première ligne).
J'ai écrit un code pour cela en utilisant l'objet Scanner
. Je reçois les résultats souhaités mais je reçois également un message d'erreur.
try{
Scanner s = new Scanner(new File(args[0]));
while (s.hasNextLine()) {
s.findInLine("Shortest path\\((\\d+)\\)::(\\w+).*-(\\w+)"); // at each line, look for this pattern
MatchResult result = s.match(); // results from
for (int i=1; i<=result.groupCount(); i++) {
System.out.println(result.group(i));
}
s.nextLine(); // line no. 29
}
s.close();
}
catch (FileNotFoundException e) {
System.out.print("cannot find file");
}
La sortie obtenue pour le fichier d'entrée ci-dessus est:
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1516)
at nearnessindex.Main.main(Main.java:29)
2
RV3280
RV2888C
1
RV3280
RV2502C
2
RV3280
RV1263
2
RV2363
RV3280
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)
Pourquoi cette erreur se produit-elle et comment la corriger?
Salut Key, oui cela fonctionne dès ajouté un séparateur de ligne. Je n'ai pas pensé au déménagement de Scanner à la fin de la ligne :) Merci beaucoup et merci pour le correctif aussi. – Harish