У меня проблема с кодом, который кажется, что он должен работать отлично.Scanner.nextInt() throwing InputMismatchException при чтении целого числа
public void inputFile() {
Scanner reader = null;
try {
reader = new Scanner(new File ("parts.dat"));
reader.useDelimiter("\\,|\\n");
while(reader.hasNext()) {
System.out.println(reader.next());
System.out.println(reader.next());
System.out.println(reader.nextDouble());
System.out.println(reader.nextInt()); //InputMismatchException
}
}
catch(IOException e) {
}
finally {
reader.close();
}
}
Когда я запускаю код, я получаю следующий результат:
137B245
1/4" bolt
0.59
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.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at lab02d.inputFile(lab02d.java:25)
at lab02d.main(lab02d.java:11)
parts.dat содержит:
137B245,1/4" bolt,.59,12
137N245,1/4" nut,.29,12
137B246,1/2" bolt,.79,12
137N246,1/2" nut,.39,25
139S128,1/8" wood screw,.19,8
139S129,1/4" wood screw,.22,4
139S130,1/2" wood screw,.35,16
145W321,1/8" washer,.12,5
145W322,1/4" washer,.14,6
145W323,1/2" washer,.18,9
Я попробовал несколько вещей, чтобы попытаться получить этот код Работа. Я попытался использовать Integer.parseInt (reader.next()), но это просто выбрасывает другое исключение. Я также попытался изменить кодировку текстового файла, но это ничего не исправить.
Можно ли положить 'e.printStackTrace()' в блок 'catch' и опубликовать его? –