嵌套的for循环上的无效代码返回布尔值

时间:2018-11-18 20:37:04

标签: java for-loop nested-loops

我正在尝试完成在课堂上收到的练习。由于尚未评估解决方案,因此也不会发布解决方案。我似乎无法弄清楚。当我运行此代码时,我会收到有关死代码的警告。这是有道理的,因为我的代码似乎不允许迭代第二个子数组。因此,即使第一个子数组的所有元素都相同,即使第二个元素都不相同,该方法也会返回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;

   }

 }

2 个答案:

答案 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