java: text-Datei Lesen und speichern der Infos in einem array mit Hilfe von scanner Klasse
Ich habe eine text-Datei enthalten die Noten von Studenten wie:
Kim $ 40 $ 45
Jack $ 35 $ 40
Ich versuche zu Lesen diese Daten aus der text-Datei und speichern Sie die Informationen in ein array-Liste mit Scanner-Klasse. Könnte jeder eine Anleitung mir schreiben den code korrekt?
- 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();
}
}
Runtime error:
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)
Welche Probleme haben Sie? Wie sieht Ihr scheitern, um Ihr problem zu lösen?
versuchen, meine Antwort, sollte es funktionieren.
versuchen, meine Antwort, sollte es funktionieren.
InformationsquelleAutor Amateur | 2010-03-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
useDelimiter(" \\$ |[\\r\\n]+");
Ihre Probleme waren:
$
ist ein regex-Metazeichen ist, muss escaped werdenDas Trennzeichen ist ebenfalls von entscheidender Bedeutung.
InformationsquelleAutor polygenelubricants
Ihre
while
loop ausgeschaltet ist.nextLine()
erhalten Sie alles, was Links von der Linie und bewegt den cursor dort.nextInt()
dann springen Trennzeichen, bis es findet eine int.Das Ergebnis wird sein, das überspringen der Werte.
Vorausgesetzt, Kim und Jack waren auf verschiedenen Linien, die Sie bekommen würde:
als Ihre ausgegeben; das ist nicht, was Sie wollen.
Entweder Sie verwenden müssen, um die end-of-line-als Trennzeichen verwenden oder eine StringTokenizer zu brechen jede Zeile oben und dann analysieren die einzelnen Abschnitte als einzelne Token.
InformationsquelleAutor Smalltown2k