returns 布尔值的嵌套 for 循环上的死代码
Dead code on a nested for loop that returns a boolean
我正在尝试完成我们在 class 中收到的练习。该解决方案不会也不会发布,因为它没有被评估。我似乎无法弄清楚。当我 运行 这段代码时,我收到了死代码警告。这是有道理的,因为我的代码似乎不允许遍历第二个子数组。因此,当第一个子数组的所有元素都相同时,即使它们不是第二个子数组,方法 returns 为真。知道如何解决这个问题吗?我现在很迷茫。
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;
}
}
我猜你想要这个:
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;
}
which returns 仅当每个子数组都包含相同的项时才为真。
您的代码在第一次迭代时终止了循环,因为 if/else
语句都包含 return
.
死代码指的是第二次循环的增量(j++
)。这将永远不会达到,因为声明:
if(arr[i][j]==arr[i][j+1]) {
return true;
} else {
return false;
}
returns 在遇到第一个点时立即执行,即当 j=0
时,因此永远不会达到 j++
。
我正在尝试完成我们在 class 中收到的练习。该解决方案不会也不会发布,因为它没有被评估。我似乎无法弄清楚。当我 运行 这段代码时,我收到了死代码警告。这是有道理的,因为我的代码似乎不允许遍历第二个子数组。因此,当第一个子数组的所有元素都相同时,即使它们不是第二个子数组,方法 returns 为真。知道如何解决这个问题吗?我现在很迷茫。
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;
}
}
我猜你想要这个:
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;
}
which returns 仅当每个子数组都包含相同的项时才为真。
您的代码在第一次迭代时终止了循环,因为 if/else
语句都包含 return
.
死代码指的是第二次循环的增量(j++
)。这将永远不会达到,因为声明:
if(arr[i][j]==arr[i][j+1]) {
return true;
} else {
return false;
}
returns 在遇到第一个点时立即执行,即当 j=0
时,因此永远不会达到 j++
。