当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《Javafor循环不迭代,在一次迭代后停止方法而不是重复》经验,为你挑选了1个好方法。

我正在完成一项家庭作业,我必须填写一个阵列并检查其中是否有四个连续的数字在上下,从一侧到另一侧或对角线.我认为我有逻辑,但我的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;

}

John Kugelma.. 5

// 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在函数到底是你所需要的.



1> John Kugelma..:
// 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在函数到底是你所需要的.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有