Проблема считывания данных из файла java
У меня есть класс Person, в котором созданы геттеры и сеттеры, а также переменные name (String), age(int), height(double), width(double). Я хочу считать информацию из файла и присвоить этим переменным соответствующие данные о человеке.
- setName принимает значение String
- setAge принимает значение int
- setHeight и setWidth принимают значения double
Вроде звучит все просто, но программа выдает ошибку Exception in thread "main" java.util.InputMismatchException
import java.util.Scanner;
import java.io.File;
import java.io.IOException;
public class ObjectOriented {
public static void main(String args[]) throws IOException{
Scanner inputFile=new Scanner(new File("src\\statistics.txt"));
Person dima=new Person();
dima.setName(inputFile.nextLine());
dima.setAge(inputFile.nextInt());
dima.setHeight(inputFile.nextDouble());
dima.setWidth(inputFile.nextDouble());
dima.userInformation();
}
}
userInformation() выводит информацию о пользователе.
Сам вайл выглядит так:
Dima
20
172.5
61.9
Ответы (1 шт):
Автор решения: Perfect Voyage
→ Ссылка
Замените точку в текстовом файле, или если это невозможно, используйте парсинг. Прошу заметить так же, что после метода nextInt нужно вызывать nextLine.
Person dima = new Person();
dima.setName(inputFile.nextLine());
dima.setAge(inputFile.nextInt());
inputFile.nextLine();
dima.setHeight(Double.parseDouble(inputFile.nextLine()));
dima.setWidth(Double.parseDouble(inputFile.nextLine()));
//dima.setHeight(inputFile.nextDouble());
//dima.setWidth(inputFile.nextDouble());
dima.userInformation();
//И закрывать не забываем
inputFile.close();
В принципе такой подход мне кажется даже лучше, потому что внутри у nextDouble всё тот же
try {
return Double.parseDouble(processFloatToken(next(floatPattern())));
} catch (NumberFormatException nfe) {
position = matcher.start(); // don't skip bad token
throw new InputMismatchException(nfe.getMessage());
}