A NoSuchElementError

A NoSuchElementError

提问人:Jen 提问时间:1/18/2023 最后编辑:Federico klez CullocaJen 更新时间:1/18/2023 访问量:61

问:

下面的代码假设启动一个连接 4 游戏,我使用扫描仪类来获取用户的输入,但是当我运行它时,它给了我一个 NoSuchElementError。

我试图注释掉 close();方法并重新运行程序,但相同的错误很普遍。

这是我的代码。

Pick a row 
Exception in thread "main" java.util.NoSuchElementException 
at java.base/java.util.Scanner.throwFor(Scanner.java:937)
at java.base/java.util.Scanner.next(Scanner.java:1594) 
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at E.start(E.java:223) 
at Main.main(Main.java:6)
public void start(){//need a method that changes the board{
    while(checkPlayerWin()== false|| checkAIWin()== false){
        Scanner scan= new Scanner(System.in);
        System.out.print("Pick a row ");
        int row= scan.nextInt();
        insertCounter(row, "X");
        scan.close();
        reprintBoard();
        random();//insert random counter into a place in the board
        reprintBoard();
    }
}

a.start();//in the class main on line 6
爪哇岛 java.util.scanner nosuchelementexception

评论

1赞 Federico klez Culloca 1/18/2023
即使这不是问题也要将该调用放在循环之后,并将声明移动到循环之前。closeScanner
1赞 Joachim Sauer 1/18/2023
您是否通过某种在线编译器运行它?这些通常有一个额外的设置来允许输入,并且默认为空输入(这将产生此错误或类似错误)。
1赞 jsheeran 1/18/2023
不相关,但避免将布尔表达式与 或 进行比较是一种很好的风格。truefalsewhile (!checkPlayerWin() || !checkAIWin())
1赞 Federico klez Culloca 1/18/2023
此外,这应该是 ,而不是&&||
1赞 user16320675 1/18/2023
如果它是为阅读而创建的,则不要 ;即使不在其他方法或代码中 - 也会关闭并且不会再次打开,因此即使使用新的/其他(通常从不关闭您未打开的资源),也无法从中读取更多数据close()ScannerSystem.inclose()System.inScanner

答: 暂无答案