java报错:Missing return statement

时间:2020-02-23 14:35:27  来源:igfitidea点击:

在Java中,缺少return语句是一个常见的错误,如果我们忘记添加return语句或者在错误的方案中使用。

在本文中,我们将看到不同的场景 missing return statement可能发生。

缺少return 语句

以下是我们可以缺少返回语句错误的一些方案。

场景1

我们举个例子,我们有一种方法,返回给定的正数的绝对值。
在此示例中,我们计算了绝对值但忘了返回它。
当我们编译此代码时,编译器会报告错误。
请参阅示例和输出。

class Main {
 
    static int getAbsolute(int val) {
        Math.abs(val);
    }
 
    public static void main(String[] args){
        int a = -12;
        int result = getAbsolute(a);
        System.out.println(result);
    }
}

输出

Error: this method must return a result of type int

解决方案

我们可以通过使用两种方式来解决它 add return statement在代码中或者 set return type as void在方法签名中。
请参见下面的示例,其中我们添加了返回语句的第一个示例。
我们还添加了另一种方法 getAbsolute2()并回来了 void如果我们不想从方法中返回任何内容。

class Main {
 
    static int getAbsolute(int val) {
        return Math.abs(val); //adding return statement
    }
 
    //set void
    static void getAbsolute2(int val) {
        System.out.println(Math.abs(val));
    }
 
    public static void main(String[] args){
        int a = -12;
        int result = getAbsolute(a);
        System.out.println(result);
        getAbsolute2(a);
    }
}

输出:

12
12

场景2.

如果我们在if块中使用了返回语句,也会发生此错误。

此返回声明只会在何时执行 if块执行。
由于返回语句取决于IF块条件,因此编译器报告错误。
我们必须把回报声明 else block或者到 end of the method解决这个问题。

class Main {
    static int getAbsolute(int val) {
        int abs_val = Math.abs(val);
        if(val>0)
            return abs_val;
    }
 
    public static void main(String[] args){
        int a = -12;
        int result = getAbsolute(a);
        System.out.println(result);
    }
}
This method must return a result of type int
Note: A method that has return type in its signature must have return statement.

解决方案

如果返回语句在任何块内部 iffor等等,我们需要添加另外的返回 else块或者在最后一行的方法主体中以避免丢失返回类型错误。
请参阅示例和输出。

class Main {
 
    static int getAbsolute(int val) {
        int abs_val = Math.abs(val);
        if(val>0)
            return abs_val;
        return 0;
    }
 
    public static void main(String[] args){
        int a = -12;
        int result = getAbsolute(a);
        System.out.println(result);
    }
}

输出

0