Я выполняю простую задачу. Я присваиваю переменным строки, целые числа и двойное число. Переменные назначаются через сканер, читающий текстовый файл. Сканер не может прочитать дубль. Он выдает исключение несоответствия ввода. Я исследовал переполнение стека для ответа и пробовал следующие решения:
Текстовый файл выглядит следующим образом:
Pebbles Flinstone\n
1 2.2\n
This is a line of text\n
Это мой код:
public static void main(String[] args) throws FileNotFoundException {
File file = new File("input.txt");
Scanner scanner = new Scanner(file);
String s1 = scanner.next(); // s1 is assigned to Pebbles
String s2 = scanner.next(); // s2 is assigned to Flintstone
int x = scanner.nextInt(); // x is assigned to 1
double y = scanner.nextDouble(); // y is assigned to 2.2
scanner.nextLine(); // Advance scanner to beginning of next line
String s3 = scanner.nextLine();
scanner.close(); // s3 is assigned to "This is a line of text"
System.out.print(y);
}
Как заставить сканер читать 2.2 как двойной? Смена локали не работает. Замена десятичной дроби на запятую тоже не работает.
Когда я запускаю это при чтении с консоли, все работает нормально. Я предполагаю, что у вас есть часть файла, которая неправильно отформатирована
удалите \n из вашего входного файла, и он будет работать нормально. чтобы указать новую строку, просто нажмите return (ввод) в вашем файле. не используйте \n




scanner.nextDouble(), что еще? Проверьте свой ввод и попробуйте ввести строкиSystem.out.println();, чтобы убедиться, что вы ввели его неправильно.