我在java中遇到这个运行时错误:java.util.NoSuchElementException,我不知道如何解决它

时间:2013-03-31 18:38:08

标签: java runtime-error

我正在java中创建一个tic tac toe游戏,用于完成家庭作业。我有一个名为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)

一旦显示进入该位置的提示并且我能够输入该位置之前,我就会收到错误。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您是否尝试从while循环中删除以下代码,看看它是否有效。

    keyboard.close();

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