我正在尝试完成在课堂上收到的练习。由于尚未评估解决方案,因此也不会发布解决方案。我似乎无法弄清楚。当我运行此代码时,我会收到有关死代码的警告。这是有道理的,因为我的代码似乎不允许迭代第二个子数组。因此,即使第一个子数组的所有元素都相同,即使第二个元素都不相同,该方法也会返回true。关于如何解决这个问题的任何想法?我现在很迷茫。
public class Warmup2 {
public static void main(String[] args) {
int[][] arr = {{1,1},{6,6,7}};
System.out.println(subArraySame(arr));
}
//method that takes a 2D-array and checks if the elements of the subarrays are all the same
public static boolean subArraySame(int[][] arr) {
for(int i = 0; i<arr.length; i++) {
for(int j = 0; j<arr[i].length-1; j++) {
if(arr[i][j]==arr[i][j+1]) {
return true;
} else {
return false;
}
}
}return false;
}
}
答案 0 :(得分:1)
无效代码是指第二个循环的增量(j++
)。自声明以来,这将永远无法实现:
if(arr[i][j]==arr[i][j+1]) {
return true;
} else {
return false;
}
在遇到的第一个点即j=0
时立即返回,因此j++
将永远不会到达。
答案 1 :(得分:0)
我想你想要这个:
public static boolean subArraySame(int[][] arr) {
for(int i = 0; i<arr.length; i++) {
for(int j = 0; j < arr[i].length-1; j++) {
if(arr[i][j] != arr[i][j+1]) {
return false;
}
}
}
return true;
}
仅当每个子数组都由相等的项组成时,它返回true。
您的代码在第一次迭代时终止了循环,因为if/else
语句都包含一个return
。