java方法返回值问题

public boolean Find(int target, int [][] array) {

    for(int i=0;i<array.length;i++){
        for(int j=0;j<array[i].length;j++){
            if(array[i][j] == target){
                return true;
            }else{
                return false;
            }
        }
    }

}

上述代码返回了Boolean类型的数值了,但是还是报错方法没有返回Boolean类型的数值

阅读 2.6k
4 个回答
 for(int i=0;i<array.length;i++){
    for(int j=0;j<array[i].length;j++){
        if(array[i][j] == target){
            return true;
        }
    }
}
return false;

你这个判断的else错了
array为空数组时没走循环所以没有返回值
array不为空走到第一个下标就返回了

?没看懂问题,建议把报错信息、调用Find(int target, int [][] array)也补全

public boolean Find(int target, int[][] array) {
        //如果array.length小于等于0,跳过for循环,goto label_1,此时该方法无返回值

        for (int i = 0; i < array.length; i++) {
            //如果每一个array[i].length都小于等于0,第二个循环始终没有执行,goto label_2
            
            for (int j = 0; j < array[i].length; j++) {
                if (array[i][j] == target) {
                    return true;
                } else {
                    return false;
                }
            }
            
            // this is label_2
        }
        // this is label_1
        
    }

正确方案:

public boolean Find(int target, int[][] array) {
        boolean temp = false;

        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                if (array[i][j] == target) {
                    temp = true;
                } else {
                    temp = false;
                }
            }
        }
        return temp;

    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题