我的扫描仪没有下一行,导致 NoSuchElementFound 异常



我正在尝试创建一个简单的应用程序,该应用程序接受一定数量的名称并从中创建锦标赛括号。现在我被困在创建每场比赛的数量和参赛者。目前,我想创建一个故障保险,如果用户想要匹配的人数与总人数没有平均分配,它就会警告用户。我让他们简单地输入"Y"或"N"来指示。问题是程序不给他们输入响应的机会,并自动输出一个NoSuchElementFound异常:No line found。

这是一个全新的扫描仪,用来接收这个响应。我试着使用。hasnext来看看是否没有下一行,结果是假的。基本上,在我得到所有参赛者(一个单独的方法,工作得很好)之后,这是控制台:

参赛总人数:5

每场比赛你想参赛多少人?

2

警告:选择此数字表示每场比赛的参赛人数不相同。

提示参赛总人数:5

如果要继续,请输入'Y'。如果您想在每场比赛中输入不同的参赛人数,请输入'N'。

检查值:false

如果有帮助的话,下面是麻烦的代码:

    String answer = "yes";
    Scanner scan = new Scanner(System.in);      
    float roundedMatchCount = 0;
    float matchCount = 0;
    entrant victor = new entrant();
    float matchMembers;
    Scanner scan = new Scanner(System.in);
    System.out.println("How many contestants do you want to compete per match?");
    matchMembers = scan.nextInt();

    matchCount = input.size() / matchMembers;

    scan.close();
    Scanner s = new Scanner(System.in);

    if (input.size() % matchMembers !=0)
        //if the number of contestants is not divisble by the number 
        //of participants in a match
    {
        System.out.println("Warning: Choosing this number means that there will not be the same number of contestants in each match.");
        System.out.println("Reminder that the total number of contestants is: "
                +input.size());
        //begin while

            System.out.println("If you want to proceed, enter 'Y'. If you want to enter a different number of contestants per match, enter 'N'.");
            boolean check = s.hasNextLine();
            System.out.println("check value: " + check);
            answer = s.nextLine();
            //WHAT
            if (answer.contains("N"))
            {
                //ask for a new number
            }
            else if (answer.contains("Y"))
            {
              //round the number of matches up or down depending on user input
            }
            else
            {
                System.out.println("Error: Invalid response.");
            }

    }

请注意,input是一个ArrayList,它是从上一个方法传递到这个方法的。我知道它里面有正确的条目数,因为在之前的测试中,我打印出了它的内容和大小。

正如KDM所指出的那样,我的问题是由我如何关闭以前的扫描仪引起的。使用scan.close()解决了我的问题。

相关内容

  • 没有找到相关文章

最新更新