Вопрос-ответ

NoSuchElementException with Java.Util.Scanner

Исключение NoSuchElementException с Java.Util.Scanner

Я очень новичок в Java, но работаю над книгой Java: Как программировать (9-е изд.) и дошел до примера, когда ни за что на свете не могу понять, в чем проблема.

Вот (слегка) дополненная версия примера исходного кода из учебника:

import java.util.Scanner;
public class Addition {
public static void main(String[] args) {
// creates a scanner to obtain input from a command window

Scanner input = new Scanner(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 методом перечисления, чтобы указать, что в перечислении больше нет элементов.

http://docs.oracle.com/javase/7/docs/api/java/util/NoSuchElementException.html

Как насчет этого :

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);

java