Java for循环不迭代,在一次迭代后停止方法而不是重复

标签 java for-loop

我正在做一项家庭作业,我必须填写一个数组,并检查数组中是否有四个连续的数字上下、左右或对角线。我想我的逻辑是错误的,但我的 for 循环在第一次迭代时停止,而不是搜索数组。感谢您的帮助。

public static boolean isConsecutiveFour(int[][] values) {
    int One = 0;

    for (int i = 0; i < values[0].length; i++) {
        for (int j = 0; j < values.length; j++) {
            One = values[i][j];
            //System.out.println(One);
            // up and down
            if (values[i + 1][j] == One) {
                if (values[i + 2][j] == One) {
                    if (values[i + 3][j] == One) {
                        return true;
                    }
                }
            }
            // left to right
            if (values[i][j + 1] == One) {
                if (values[i][j + 2] == One) {
                    if (values[i][j + 3] == One) {
                        return true;
                    }
                }
            }
            // diagonal to right
            if (values[i + 1][j + 1] == One) {
                if (values[i + 2][j + 2] == One) {
                    if (values[i + 3][j + 3] == One) {
                        return true;
                    }
                }
            }
            // diagonal to left
            if (i >= 3 && j >=3) {
                if (values[i - 1][j - 1] == One) {
                    if (values[i - 2][j - 2] == One) {
                        if (values[i - 3][j - 3] == One) {
                            return true;
                        }
                    }
                }
            } else
                return false;
        }
    }
    return false;

}

最佳答案

// diagonal to left
if (i >= 3 && j >=3) {
    if (values[i - 1][j - 1] == One) {
        if (values[i - 2][j - 2] == One) {
            if (values[i - 3][j - 3] == One) {
                return true;
            }
        }
    }
} else
    return false;

问题是如果最后一个 if 语句失败,else 子句将触发并返回 false。仅仅因为一项特定的检查失败就返回这里还为时过早。

去掉 else 子句。在所有循环迭代运行之前,您不想返回 false。函数末尾的最终 return false 就是您所需要的。

关于Java for循环不迭代,在一次迭代后停止方法而不是重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41593940/

相关文章:

java - 如何从下往上添加网格中的对象?

javascript - 使用for循环访问javascript中的对象属性?

java - java构造函数有什么意义?

java - 如何在 Android TO 上强制应用程序图标? (防止发射器采用它)

java - 带有 slf4j 和 log4j 的 hibernate 3.4

java - 如何制作 block 感知执行上下文?

javascript - 将函数移到循环外

内部类完成后,Java开始下一个循环迭代

r - 将栅格值(从堆栈)提取到 for 循环中的点

c - 所以我正在用 C 编写一个投票程序,但我无法想出一个 for 循环来计算总票数