使用Scanner时发现java.util.NoSuchElementException

时间:2017-08-07 18:51:16

标签: java exception input java.util.scanner nosuchelementexception

我是一个新手,并试图同时学习和练习java代码。它真的很基本,但我仍然卡住了。在遇到Scanner课程时,我面临以下错误。我已经通过这里早些时候提供的很多解决方案,但我仍然无法解决它

  

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

请找到以下代码:

    import java.util.Scanner;
    import java.io.IOException;
    public class Main{
    public static void main(String[] args) {

    try
    {
        chk();
    }
    catch(final IOException x)
    {
        x.printStackTrace();
    } 

    }
    @SuppressWarnings("resource")
    public static void chk() throws IOException 
    {
        Scanner sc = new Scanner(System.in);
        int value,i=0;
        for (i = 0; i < 3; i++)
        {
            System.out.println("Enter the number :");
            while (!sc.hasNextInt()) 
            {
                sc.nextInt(); 

            }
            value = sc.nextInt();
            if (value > 0) {
                if (value > 20) {
                    System.out.println("Valuable customer");
                } else
                    System.out.println("Not a valuable customer");
            }
            else
                System.out.println("Invalid Input");

        }
        sc.close();
    }
    }

**Error Message**

`Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:907)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at Main.chk(Main.java:27)
at Main.main(Main.java:9)`

1 个答案:

答案 0 :(得分:1)

你需要重新思考你的逻辑。在这里你说“虽然扫描仪没有下一个int,但试着获得下一个int”

    while (!sc.hasNextInt()) 
    {
        sc.nextInt(); 

    }