簡體   English   中英

線程“主”中的錯誤異常java.util.NoSuchElementException

[英]Error Exception in thread “main” java.util.NoSuchElementException

我用Java寫了一個非常簡單的計算器,但是這段代碼有一個問題:

import java.util.Scanner;
public class Operation extends Declaration {
    public static void main(String[] args){
        int w = 0;
        Scanner scan=new Scanner(System.in);
        for(int i=0;i<1;){
            System.out.println("WYBIERZ RODZAJ DZIALANIA: ");
            System.out.println("1- DODAWANIE");
            System.out.println("2- ODEJMOWANIE");
            System.out.println("3- MNOZENIE");
            System.out.println("4- DZIELENIE");
            input=scan.next();
            if(validate(input)){
                m = Integer.parseInt(input);
                if(m > 0 && m < 5){
                    i++;
                } else {
                    System.out.println("Podaj liczbe w zakresie 1-4. ");
                }
            }
            else{
                System.out.println("Niestety, podana wartosc nie jest liczba calkowita. ");
            }
        }
    }
}

不幸的是我遇到一個錯誤:

Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)
    at Operation.main(Operation.java:15)
    at Calculator.main(Calculator.java:5)

請幫忙。

錯誤消息說:

Exception in thread "main" java.util.NoSuchElementException
    ..
    at java.util.Scanner.next(Unknown Source)

如果我們閱讀Exception文檔 ,它會指出(我的粗體):

Enumeration 的nextElement方法拋出,以指示該枚舉中沒有更多元素

如果我們假設輸入已正確聲明,則錯誤仍在此行中:

input=scan.next();

沒有下一個元素。 之前調用hasNext(),以確保確實存在下一個元素。

您尚未在代碼中聲明變量輸入。 對於字符串input編寫如下內容,

String input=scan.nextLine();

用於將整數作為輸入寫入:

int input=scan.nextInt();

掃描是您的掃描儀對象

Operation類中的第15行是: input=scan.next(); 假設已聲明變量(否則將發生編譯錯誤),則該方法的文檔頁面為: http : //docs.oracle.com/javase/7/docs/api/java/util/Scanner.html #next%28%29

沒有更多可用令牌時,將引發NoSuchElementException。 您必須調用hasNext()來更正您的程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM