Я пытаюсь прочитать целое число и два двойных числа из текстового файла. Я написал более короткую демонстрацию моей проблемы.
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
int q = 0;
double w = 0, e = 0;
Scanner s = null;
try {
s = new Scanner(new File(args[0]));
while(s.hasNext()) {
q = s.nextInt();
w = s.nextDouble();
e = s.nextDouble();
}
System.out.println("1: " + q + "\n2: " + w + "\n3: " + e);
} catch(FileNotFoundException e1) {
e1.printStackTrace();
System.out.println(e1.getMessage());
} finally {
if(s != null) {
s.close();
}
}
}
}
Это дает мне
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
at Test.main(Test.java:14)
Я думаю, что у моего Сканера возникла проблема с чтением двойника, но я не могу понять, почему.
Мой текстовый файл содержит:
3000 30.3 10.4
Scanner.nextDouble
должен просто вернутьdouble
. Нет необходимости бросать. И даже если бы он не вернулdouble
, это привело бы к предупреждению компилятора из-за присвоения переменной недопустимого типа, а не исключения времени выполнения. - person Arc676   schedule 10.01.2016Scanner
использовал неправильную локаль, поэтому он искал запятые в качестве разделителей для десятичных знаков. koin: вы можете ответить на свой вопрос, чтобы показать, что проблема решена - person Arc676   schedule 10.01.2016