首页 > 解决方案 > java.util.NoSuchElementException:找不到行。以前工作,但以后不行。我不知道为什么

问题描述

我正在尝试制作一款游戏,无论出于何种原因,扫描仪之前都以单独的方法工作,但不是在这个方法中。

工作于:

Scanner in = new Scanner(System.in); // Scanner in case of invalid input

for (int i = 1; i <= p.getSpeed(); i++) { // loop to account for invalid direction

if (d.equalsIgnoreCase("right") || d.equalsIgnoreCase("r") && p.getX() <= width - 2) { // right

    if (board[p.getY()][p.getX() + 1] == ' ') {
        board[p.getY()][p.getX()] = ' ';
        p.setX(p.getX() + 1);
        board[p.getY()][p.getX()] = 'P';
    }

    else { // right not open
        System.out.println("Please input a valid direction");
        d = in.nextLine();
        i--;
    }

}

不适用于:

Scanner in = new Scanner(System.in); // Scanner in case of invalid input

int i = 1;

while (i == 1) {

    if (d.equalsIgnoreCase("right") || d.equalsIgnoreCase("r") && p.getX() <= width - 2) { // right

        for (int j = 0; j <= numZombies - 1; j++) {

            if (zombie[j].getX() == p.getX() + 1 && zombie[j].getY() == p.getY()) { // checks each zombie to see if it is one to the right of the player

                zombie[j].subtractHealth(p.getAttack());

                break;

            }

            if (zombie[j].getX() == p.getX() + 2 && zombie[j].getY() == p.getY()) {

                zombie[j].subtractHealth(p.getAttack());
                break;

            }else if (j == numZombies - 1) { // if no zombies are found

                System.out.println("There is no zombie there, please insert a new direction");
                d = in.nextLine();
                i--;

            }

        }

    }
}

方法都有效,逻辑很好,我只是不知道为什么它适用于第一个而不是第二个

标签: javajava.util.scanner

解决方案


关闭第一个扫描仪是问题所在,摆脱该代码修复它。谢谢查尔斯


推荐阅读