线程" main"中的错误异常java.util.NoSuchElementException

时间:2014-07-11 07:48:05

标签: java

我写的是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)

请帮忙。

3 个答案:

答案 0 :(得分:0)

错误消息说明了:

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

如果我们阅读documentation of the Exception,则说明(我的大胆重点):

  

由枚举的nextElement方法抛出,表示枚举中有不再有元素

如果我们假设输入已被正确声明,则错误仍在此行中:

input=scan.next();

没有下一个元素。之前调用hasNext(),以确保实际存在下一个元素。

答案 1 :(得分:0)

您尚未在代码中声明变量输入。 并且用字符串input写这样的东西,

String input=scan.nextLine();

用于将整数作为输入写入:

int input=scan.nextInt();

其中scan是您的扫描仪对象

答案 2 :(得分:0)

Operation类中的第15行是:input=scan.next(); 该方法的文档页面,假设声明了变量(否则会出现编译错误)是:http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#next%28%29

当没有可用的令牌时,抛出NoSuchElementException。您必须致电hasNext()来更正您的计划。