尝试捕获InputMismatchException处理。我想创建可以在游戏机上玩的TicTacToe游戏

时间:2020-08-22 08:52:01

标签: java

在这里找到了一个解决方案,该方法如何正确处理“ InputMismatchException”并将其实现到我的代码中。但是结果仍然不是我期望的。

我必须扫描2个整数(x,y坐标)并将它们添加到数组中。试图分别为x和y创建两个循环,但是结果是相同的。

    private static void enterCoordinate(char[][] layoutMatrix) {
        int[] xy = new int[2];
        boolean again = true;
        while (again) {
            try {
                System.out.print("Enter the coordinates: ");
                for (int i = 0; i < 2; i++) {
                    xy[i] = scanner.nextInt();
                }
                again = false;
            }
            catch (InputMismatchException e) {
                System.out.println();
                System.err.println("You should enter numbers!");
                scanner.next();
            }
        }

输出如下所示

this is what i see in console

这不是我想要看到的结果

1 个答案:

答案 0 :(得分:6)

如果nextInt()失败,它消耗失败的令牌……因此您将进行递归,立即再次调用nextInt(),这也将失败。 ..因此,您将永远再次递归。

您可能应该在失败时致电scanner.next(),以使用“不是数字的令牌”。仅添加该行可能会解决此问题,但我建议您将此转换为while循环...在这里重复执行不会有任何好处(并且如果用户输入很多个无效数字,仍然可能导致堆栈溢出。