java: Lire un texte, de fichiers et de stocker les infos dans un tableau à l'aide du scanner de classe
J'ai un fichier texte à inclure les Notes des Étudiants comme:
Kim $ 40 $ 45
Jack $ 35 $ 40
Je suis en train de lire ces données à partir du fichier texte et de stocker les informations dans un tableau la liste à l'aide du Scanner de la Classe. Pouvait-on me guide pour écrire le code correctement?
Code
import java.io.*;
import java.util.*;
public class ReadStudentsGrade {
public static void main(String[] args) throws IOException {
ArrayList stuRec = new ArrayList();
File file = new File("c:\\StudentGrade.txt");
try {
Scanner scanner = new Scanner(file).useDelimiter("$");
while (scanner.hasNextLine())
{
String stuName = scanner.nextLine();
int midTirmGrade = scanner.nextInt();
int finalGrade = scanner.nextInt();
System.out.println(stuName + " " + midTirmGrade + " " + finalGrade);
}
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
}
Erreur d'exécution:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:840)
at java.util.Scanner.next(Scanner.java:1461)
at java.util.Scanner.nextInt(Scanner.java:2091)
at java.util.Scanner.nextInt(Scanner.java:2050)
at writereadstudentsgrade.ReadStudentsGrade.main(ReadStudentsGrade.java:26)
Quels problèmes rencontrez-vous? Comment votre ne parviennent pas à résoudre votre problème?
essayez ma réponse, il devrait fonctionner.
essayez ma réponse, il devrait fonctionner.
OriginalL'auteur Amateur | 2010-03-13
Vous devez vous connecter pour publier un commentaire.
Essayer
useDelimiter(" \\$ |[\\r\\n]+");
Vos problèmes sont les suivants:
$
est une regex métacaractère qui doit être échappéLe délimiteur est également crucial.
OriginalL'auteur polygenelubricants
Votre
while
boucle est désactivée.nextLine()
vous obtiendrez tout ce qui est à gauche de la ligne et à l'avance le curseur de là.nextInt()
va alors sauter délimiteurs jusqu'à ce qu'il trouve un int.Le résultat sera à sauter de valeurs.
En supposant que Kim et Jack étaient sur des lignes différentes, vous obtiendrez:
que votre sortie; ce qui n'est pas ce que vous voulez.
Soit vous avez besoin d'utiliser la fin de la ligne comme séparateur ou d'utiliser un StringTokenizer à casser chaque ligne et ensuite d'analyser chacune des sections individuelles de jetons.
OriginalL'auteur Smalltown2k