Ich bin neu in Java und ich versuche, einen Scanner zu verwenden, um einige Daten aus einer Textdatei einzulesen. Der Scanner liest die String- und Integer-Datenelemente fein ein, aber wenn er ein Double erreicht, löst er eine InputMismatchException aus.(Java) Scanner liest nicht in nextDouble() aus Datei
Das Format der Textdatei sieht wie folgt aus ...
Nachname, Vorname, 0,0.0
Smith, John, 10,2.456
Jones, William, 15,3.568
Hier mein Code ...
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.io.File;
public class Student {
int age;
double gpa;
String firstName;
String lastName;
public static void main (String[] args) {
int iNum = 0;
double dNum = 0.0;
String str1 = "";
String str2 = "";
List<Student> listOfObjects = new ArrayList<>();
try {
Scanner src = new Scanner(new
File("data.txt")).useDelimiter(",|\r\n|\n");
while (src.hasNext()) {
str1 = src.next(); //last name
str2 = src.next(); //first name
iNum = src.nextInt(); //age
dNum = src.nextDouble(); /* gpa - having trouble reading these doubles with Scanner */
Student object = new Student(str1, str2, iNum, dNum);
listOfObjects.add(object); //add new object to list
}
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
for (Student a: listOfObjects) // printing the sorted list
System.out.print(a.getStudentLastName() + ", " +
a.getStudentFirstName() +
", " + a.getStudentAge() + ", " + a.getStudentGpa() + "\n");
}
public Student(String str1, String str2, int iNum, double dNum){
this.lastName = str1;
this.firstName = str2;
this.age = iNum;
this.gpa = dNum;
}
public String getStudentFirstName() {
return firstName;
}
public String getStudentLastName() {
return lastName;
}
public int getStudentAge() {
return age;
}
public double getStudentGpa() {
return gpa;
}
ich habe versucht, das Gebietsschema US Einstellung und versucht, mit den Trennzeichen durcheinander, aber nichts scheint zu funktionieren.
@TimBiegeleisen Ich hat versucht Aufruf src.nextLine() nach dem Aufruf von src.nextDouble(), aber der Fehler wird immer noch geworfen. Ich habe auch versucht, es als String und Parsing zu verdoppeln, aber der gleiche Fehler tritt auf. –
Also das nächste Element war kein Doppel. – EJP