NoSuchElementException z Java.Util.Scanner


Jestem bardzo nowy w Javie, ale pracuję nad książką Java: How to Program (wyd. 9) i doszedłem do przykładu, w którym nie mogę zrozumieć, na czym polega problem.
Oto (nieznacznie) rozszerzona wersja przykładu kodu źródłowego samouczka:
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

Otrzymuję błąd „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:

Zdaję sobie sprawę, że jest to prawdopodobnie związane z czymś w kodzie źródłowym, które jest niezgodne z klasą
Scanner
z
java.util
, ale naprawdę nie mogę tego pominąć w tej kwestii z punktu widzenia wniosku, jaki jest problem.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

NoSuchElementException

wywoływana przez metodę
nextElement
wyliczenia w celu wskazania, że ​​nie ma więcej elementów w wyliczeniu.

http://docs.oracle.com/javase/ ... .html
http://docs.oracle.com/javase/ ... .html
Co powiesz na to:
if(input.hasNextInt() )
number1 = input.nextInt();// if there is another number
else
number1 = 0;// nothing added in the input
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Musisz użyć metody
hasNextInt ()
przed przypisaniem wartości do zmiennej.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

NoSuchElementException
zostanie wyrzucony,

jeśli nie ma więcej dostępnych tokenów
http://docs.oracle.com/javase/ ... 29... Jest to spowodowane wywołaniem metody
nextInt ()
bez sprawdzania

obecność dowolnej liczby całkowitej
http://docs.oracle.com/javase/ ... 29... Aby temu zapobiec, możesz użyć funkcji
hasNextInt ()
, aby sprawdzić, czy jest więcej dostępnych znaczników.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Integer # nextInt
rzuca
NoSuchElementException
- jeśli dane wejściowe są wyczerpane
Powinieneś sprawdzić, czy jest następna linia z
Integer # hasNextLine
if(sc.hasNextLine()){
number1=sc.nextInt();
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Musisz dodać input.close () na końcu ...
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Ten błąd występuje głównie w przypadku środowiska IDE 0nline, na którym testujesz swój kod. Nie jest poprawnie skonfigurowany, tak jakbyś uruchamiał ten sam kod na jakimkolwiek innym IDE/notatniku, działa zgodnie z oczekiwaniami, ponieważ IDE online nie jest zaprojektowane do regulowania kodu wejściowego twojego formatu, więc musisz zaakceptować dane wejściowe jako obsługę IDE online.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się