我试图查看多维数组是否为矩形。我是编程新手,无法准确找出"打破的原因;"不会让我离开循环而继续运行。即使阵列不是矩形,我仍然可以恢复原状。
public static void main(String[] args) {
int a2d[][] = {{1, 2, 3, 4, 5}, {2, 3, 4}, {1, 2, 3, 4, 5}};
int test = a2d[0].length;
for (int i = 0; i < a2d.length; i++) {
for (int j = 0; j < a2d[i].length; j++) {
if (a2d[i].length == test) {
System.out.println("True");
} else {
System.out.println("False");
break;
}
}
}
}
答案 0 :(得分:3)
为了避免使用标签,请将代码放入返回布尔值的方法中:
boolean isRectangular(int[][] a2d) {
int test = a2d[0].length;
for (int i=0; i<a2d.length; i++){
for (int j=0; j<a2d[i].length; j++){
if (a2d[i].length != test) {
return false;
}
}
}
return true;
}
可以改进代码以支持参数检查等等,但关键是你在确定答案后立即从方法返回。
答案 1 :(得分:2)
问题的Java 8方法将遵循:
int a2d[][] = {{1, 2, 3, 4, 5}, {2, 3, 4}, {1, 2, 3, 4, 5}};
boolean isRectangular =
Arrays.stream(a2d) // First, create a stream
.map(row -> row.length) // Map the length of each row to process further
.allMatch(len -> len == a2d[0].length); // Verify the length of all rows
如果使用,则不需要外部循环,这意味着没有中断。此外,如果需要,循环可以是并行的(可能加速)。
答案 2 :(得分:0)
public static void main(String[] args) {
int a2d[][] = {{1,2,3,4,5},
{2,3,4},
{1,2,3,4,5}};
int test = a2d[0].length;
outer:
for (int i=0; i<a2d.length; i++){
for (int j=0; j<a2d[i].length; j++){
if (a2d[i].length == test) {
System.out.println("True");
} else {
System.out.println("False");
break outer;
}
}
}
}
这应该做。谷歌在labeled for loops
。 This也可以为您提供帮助。