Java“缺少返回语句”

时间:2016-02-27 16:16:53

标签: java for-loop compiler-errors return

这是我的代码的一小部分。问题在于,无论代码将进入if语句。

public static double value(char[][] array, int x, int y) {
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[0].length; j++) {
                if (array[i][j] == (char) 120) {
                    int x_cord = i;
                    int y_cord = j;
                    int width = (x_cord - x);
                    int height = (y_cord - y);
                    Math.abs(width);
                    Math.abs(height);
                    double distance = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));
                    return distance;
                }

            }
        }
    }

我明白我在某处有一个逻辑上的缺陷,我需要以某种方式告诉程序它无论如何都会到达那里但我能做到吗?

4 个答案:

答案 0 :(得分:2)

编译器不接受非void返回类型的方法,如果它不确定

  • 返回值OR
  • 抛出异常

由于您确定循环内的return语句始终是执行的,您可以添加带有任何值的return语句或抛出异常:

public static double value(char[][] array, int x, int y) {
    for (int i = 0; i < array.length; i++) {
        ...
    }
    throw new IllegalArgumentException("array must contain a char with code 120");
}

答案 1 :(得分:1)

在每个理论上可能的流程中都必须有$_SESSION['SESSION_UID'] = $uid; $_SESSION['SESSION_EMAIL'] = $email; $_SESSION['SESSION_IS_LOGGEDIN'] = 1; 语句,即使在运行时没有机会到达那里。只需在最后添加一个“虚拟回报,你就可以了:

return

答案 2 :(得分:1)

尝试创建一个像这样初始化的语言环境变量double distance= 0;

 public static double value(char[][] array, int x, int y) {
     double distance= 0;
    ...
       return distance;
        }
      }
    }
   return distance;
} 

答案 3 :(得分:0)

代码中有两个可能的路径/分支,如果您已经定义了方法返回值,则每个路径/分支都必须有一个有效的return语句。