我在java中遇到了这个运行时错误:java.util.NoSuchElementException和I';I’我不知道怎么修

我在java中遇到了这个运行时错误:java.util.NoSuchElementException和I';I’我不知道怎么修,java,runtime-error,Java,Runtime Error,我正在用java为家庭作业制作一个井字游戏。我有一个名为TicTacToe的父类和一个名为humanVsHuman的派生类 以下方法是在派生类中编写的。它会提示用户输入他们想要输入游戏棋子(X或O)的位置,然后从父类调用两个方法:一个将X或O存储在名为setGb()的多维数组中,另一个将用名为displayBoard()的新棋子显示棋盘 方法如下: private void playGame() { Scanner keyboard = new Scanner (System.in);

我正在用java为家庭作业制作一个井字游戏。我有一个名为TicTacToe的父类和一个名为humanVsHuman的派生类

以下方法是在派生类中编写的。它会提示用户输入他们想要输入游戏棋子(X或O)的位置,然后从父类调用两个方法:一个将X或O存储在名为setGb()的多维数组中,另一个将用名为displayBoard()的新棋子显示棋盘

方法如下:

private void playGame() {
    Scanner keyboard = new Scanner (System.in);
    int row, col;
    System.out.println("When playing, enter the row and column position for your X or O piece separated by a space.");
    do{
        System.out.print(player1 + ", Enter X position: ");
        row = keyboard.nextInt();
        col = keyboard.nextInt();
        setGb(row, col, 'X');
        displayBoard();

        System.out.print(player2 + ", Enter O position: ");
        row = keyboard.nextInt();
        col = keyboard.nextInt();
        setGb (row, col, 'O');
        displayBoard();
        keyboard.close();
    } while (!gameOver());
}
我收到以下运行时错误:

When playing, enter the row and column position for your X or O piece separated by a space.
Deena, Enter X position: Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at Assignment7C.HumanVsHuman.playGame(HumanVsHuman.java:38)
    at Assignment7C.HumanVsHuman.repeatGame(HumanVsHuman.java:28)
    at Assignment7C.HumanVsHuman.game(HumanVsHuman.java:14)
    at Assignment7C.TicTacToeTest.main(TicTacToeTest.java:10)
一旦显示输入位置的提示,在我能够输入位置之前,我就会收到错误


提前感谢你的帮助

键盘.关闭()
移出循环。在游戏结束之前,您不想关闭
扫描仪。这不会解决问题中的异常,但无论如何您都需要这样做,以避免下一个问题。

是否尝试从while循环中删除以下代码并查看其是否有效

    keyboard.close();

或者你可以把它添加到循环之外。

Deena,
这个词是从哪里来的?我打赌:你还有一个
新的扫描仪(System.in)
在其他地方,并关闭了它。关闭
Scanner
关闭底层流。@VishalK:这是由
player1
在代码中定义的。显示完整的代码..为了更好地理解问题..键盘。在循环中关闭需要脱离循环哇!这是我说的吗?这是有道理的,但这并不是那个特殊例外的原因……不,我没有投反对票我尝试删除键盘.close(),但仍然得到相同的错误。如果是,我无法重现该异常。我想做出这样的改变至少是一个开始。我会把它编辑清楚的。我也没有得到那个确切的错误。当我运行代码时,我在线程“main”java.lang.IllegalStateException:Scanner closed
中得到一个
异常,api说
NoTouchElementException-如果输入用尽
编辑器是否允许控制台输入?