Я новичок в Java, и я пытаюсь использовать сканер для чтения в некоторых данных из текстового файла. Сканер читает в строковых и целочисленных элементах данных в порядке, но когда он достигает двойника, он генерирует исключение InputMismatchException.(Java) Сканер не читает в nextDouble() из файла
Формат текстового файла выглядит следующим образом ...
Фамилия, Имя, 0,0.0
Смит, Джон, 10,2.456
Джонс, Уильям, 15,3.568
Здесь мой код ...
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;
}
Я попытался установить локаль США и пытался баловаться с разделителями, но ничего, кажется, работает.
@TimBiegeleisen Я пыталась дозвониться src.nextLine() после вызова src.nextDouble(), но ошибка все еще бросается. Я также пробовал читать его в виде строки и разбора в два раза, но такая же ошибка возникает. –
Итак, следующий элемент не был двойным. – EJP