Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java for循环不迭代,在一次迭代后停止方法,而不是重复_Java_For Loop - Fatal编程技术网

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

Java for循环不迭代,在一次迭代后停止方法,而不是重复,java,for-loop,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

我正在做一个家庭作业,我必须填写一个数组,检查数组中是否有四个连续的数字,它们是上下、左右或对角的。我想我已经搞定了逻辑,但是我的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;

}
public静态布尔值IsConsecutiveFor(int[][]值){
int-One=0;
对于(int i=0;i<值[0]。长度;i++){
对于(int j=0;j=3&&j>=3){
如果(值[i-1][j-1]==1){
如果(值[i-2][j-2]==1){
如果(值[i-3][j-3]==1){
返回true;
}
}
}
}否则
返回false;
}
}
返回false;
}
问题是如果最后一个
if
语句失败,
else
子句将触发并返回
false
。仅仅因为一次检查失败就返回这里还为时过早

去掉
else
子句。在所有循环迭代都运行之前,您不希望返回
false
。函数末尾的最后一个
返回false
就是您所需要的

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


去掉
else
子句。在所有循环迭代都运行之前,您不希望返回
false
。函数末尾的最后一个
返回false
就是您所需要的。

我没有检查您的整个代码,但是您的for条件在我看来是错误的。通常,在外部for循环中检查数组的第一个维度,在内部检查数组的第二个维度。此外,还应在内部循环中使用值[i].length,因为值[1]的长度可能低于值[0]的长度

for (int i = 0; i < values.length; i++) {
    for (int j = 0; j < values[i].length; j++) {
for(int i=0;i
我没有检查您的整个代码,但您的for条件对我来说似乎是错误的。通常,您在数组的第一维检查外部for循环,在第二维检查内部for循环。此外,您还应该使用值[I]。在内部循环中使用长度,因为值[1]的长度可能低于值的长度[0]

for (int i = 0; i < values.length; i++) {
    for (int j = 0; j < values[i].length; j++) {
for(int i=0;i
请提供
数组。
int One=0;
whät?您在此处发布了大量代码-请将其减少为a。但我怀疑
否则返回false;
很可能是这里的问题……如果
在最后一次
之后返回false
似乎没有多大意义提供
数组。
int One=0;
whät?您在此处发布了大量代码-请将其减少为a。但我怀疑
否则返回false;
很可能是这里的问题……在上次
if
之后
否则返回false有什么意义