为什么我会收到 NoSuchElementException?

问题描述

这是我的代码

while (menuExit == true) {
        System.out.println (SEParaTE_LINE);
        System.out.println ("Which do you want to do ? ");
        System.out.println (SEParaTE_LINE);
        System.out.println ("1.Register");
        System.out.println ("2.Sign in");
        System.out.println ("3.Check shop status");
        System.out.println ("0.Exit");
        System.out.println (SEParaTE_LINE);
        System.out.print("Please enter your choice as number:");
        do{
        try{
        int selectMain = input.nextInt();
        if(selectMain == 1){
            register(currentNum,customers);
            customers.clear();
            customers = ReadData.readCustomerData();
         }else if(selectMain == 2){
            signIn(customers,historys,cusData,hisData);
        }else if(selectMain == 3){
            CheckData.checkShopStatus(shops,shopData);
            
        }else if(selectMain == 0){
            System.out.println ("Thank you");
            menuExit = false;
        }else {
            System.out.println ("Your input are wrong,Please enter again.");
        }
        continueInput = false;
        }catch(InputMismatchException ex){
            System.out.println("Please enter again.");
            input.nextLine();
        }
        
    }while (continueInput);
    input.close();

这是我的程序的菜单,当我进入这些选择之一并返回菜单时,我得到 NoSuchElementException ,错误指向 int selectMain = input.nextInt(); 行。请有人帮助我,谢谢您的关注。

解决方法

您在 try 块中有 continueInput = false ,这意味着无论用户输入如何,它都会运行。这意味着 dowhile 循环在下一次尝试时退出,并且输入被关闭。然而,因为这是在另一个 while 循环中,它会尝试获取另一个输入,即使输入扫描器已关闭!这会让你得到 NoSuchElementException。