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