0

问候查看此问题的堆栈溢出者,我是一名业余爱好者,正在使用 Java 开发划船游戏,目前面临一个问题,即使输入无效,for 循环中的 try 块也会立即迭代到下一个循环。for 循环由一个用于启动掷骰子的输入组成,掷骰子函数位于一个单独的类中,当输入不是“Y”时它将引发异常。当 try 块不在 for 循环中时,它可以完美地工作,但是当它放在 for 循环中时,即使输入无效,它也会自动迭代循环。

for (int i = 0; i < boats.length; i++) {
    try {
        System.out.printf("BOAT %d TURN %n", i + 1);
        System.out.println("Type Y to throw your dice!");
        String diceThrow = input.nextLine();
        boats[i].setPosition(newRiver.Flow(boats[i].getPosition(), newDice.diceThrow(diceThrow)));
        System.out.println("boat position is at " + boats[i].getPosition());
    } catch (IllegalArgumentException e) {
        System.out.println(e.getMessage());
    }
}
4

1 回答 1

2

我假设另一个类中用于模拟掷骰子的方法正在抛出 IllegalArgumentException。而且由于您在 catch 块中处理它,因此 for 循环不会终止,它将打印错误并继续进行下一次迭代。

于 2021-10-25T09:55:37.770 回答