Исключение NoSuchElementException с Java.Util.Scanner
Я очень новичок в Java, но работаю над книгой Java: Как программировать (9-е изд.) и дошел до примера, когда ни за что на свете не могу понять, в чем проблема.
Вот (слегка) дополненная версия примера исходного кода из учебника:
import java.util.Scanner; publicclassAddition { publicstaticvoidmain(String[] args) { // creates a scanner to obtain input from a command window
Scannerinput=newScanner(System.in);
int number1; // first number to add int number2; // second number to add int sum; // sum of 1 & 2
System.out.print("Enter First Integer: "); // prompt number1 = input.nextInt(); // reads first number inputted by user
System.out.print("Enter Second Integer: "); // prompt 2 number2 = input.nextInt(); // reads second number from user
sum = number1 + number2; // addition takes place, then stores the total of the two numbers in sum
System.out.printf( "Sum is %d\n", sum ); // displays the sum on screen } // end method main } // end class Addition
Я получаю ошибку 'NoSuchElementException':
Exception in thread "main" java.util.NoSuchElementException at java.util.Scanner.throwFor(Scanner.java:838) at java.util.Scanner.next(Scanner.java:1461) at java.util.Scanner.nextInt(Scanner.java:2091) at java.util.Scanner.nextInt(Scanner.java:2050) at Addition.main(Addition.java:16) Enter First Integer:
Я понимаю, что это, вероятно, связано с чем-то в исходном коде, что несовместимо с Scanner классом из java.util, но я действительно не могу продвинуться дальше этого с точки зрения определения того, в чем проблема.
Переведено автоматически
Ответ 1
NoSuchElementExceptionГенерируется nextElement методом перечисления, чтобы указать, что в перечислении больше нет элементов.
if(input.hasNextInt() ) number1 = input.nextInt(); // if there is another number else number1 = 0; // nothing added in the input
Ответ 2
Вы должны использовать hasNextInt() перед присвоением значения переменной.
Ответ 3
NoSuchElementException будет выдано, если больше нет доступных токенов. Это вызвано вызовом nextInt() без проверки , доступно ли какое-либо целое число. Чтобы этого не произошло, вы можете рассмотреть возможность использования hasNextInt() для проверки наличия еще каких-либо токенов.
Ответ 4
I faced this Error with nextDouble(), when I input numbers such as 5.3, 23.8 ... I think that was from my PC depending on computer settings that use Arabic (23,33 instead 23.33), I fixed it with add: Scanner scanner = new Scanner(System.in).useLocale(Locale.US);