Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我有一个返回int的方法,它告诉我I';我缺少一个返回语句。在不重写方法的情况下可以修复此问题吗?_Java - Fatal编程技术网

Java 我有一个返回int的方法,它告诉我I';我缺少一个返回语句。在不重写方法的情况下可以修复此问题吗?

Java 我有一个返回int的方法,它告诉我I';我缺少一个返回语句。在不重写方法的情况下可以修复此问题吗?,java,Java,这就是方法。正如您所看到的,所有if语句中都有一个return,所以我理解它为什么不能识别输出,但是有没有办法解决这个问题 private int bounds(int x, int y) { if (x == -1) { if (y == -1) { return life[130][70]; } else if (y == 71) { ret

这就是方法。正如您所看到的,所有if语句中都有一个return,所以我理解它为什么不能识别输出,但是有没有办法解决这个问题

private int bounds(int x, int y) {
        if (x == -1) {
            if (y == -1) {
                return life[130][70];
            }
            else if (y == 71) {
                return life[130][0];
            }
            if (0 <= y && y <= 70) {
                return life[130][y];
            }
        }
        else if (x == 131) {
            if (y == -1) {
                return life[0][70];
            }
            else if (y == 71) {
                return life[0][0];
            }
            if (0 <= y && y <= 70) {
                return life[0][y];
            }
        }
        if (0 <= x && x <= 130) {
            if (y == -1) {
                return life[x][70];
            }
            else if (y == 71) {
                return life[x][0];

            }
            if (0 <= y && y <= 70) {
                return life[x][y];
            }
        }
    }
私有整数边界(整数x,整数y){
如果(x==-1){
如果(y==-1){
回归生活[130][70];
}
如果(y==71),则为else{
回归生命[130][0];
}

如果(0问问自己,如果x为-2,你的方法会返回什么

意思是:编译器告诉您,通过该方法的路径没有看到返回语句。简单地说:相信编译器

您可以通过在if块之后添加一个最终的return语句来解决这个问题


但是真正的答案是:你永远不应该编写那么复杂的代码。上面的代码是维护的噩梦。它应该被重构。

你需要在函数的末尾添加一个默认的返回,如果if语句中没有一个是真的

那么就可以修复缺少的返回语句编译错误,而不必重写m方法:

  • 引发RuntimeException(如果只有一些输入有效)
  • 在末尾返回默认值(如果所有输入都有效)
  • 在现有逻辑中,不处理-1以外的负整数(与x和y的上限相同)。如果当前未处理的输入无效,可以执行以下操作:

    private int bounds(int x, int y) {
        ...
        (Existing logic)
        ...
        throw new IllegalArgumentException("Bad input");
    }
    

    您没有涵盖多个条件。例如,
    x
    -1
    y
    72
    ,您需要考虑每种情况,正如@fredrarson指出的那样。