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.
解决方案
如果返回语句在任何块内部 if那 for等等,我们需要添加另外的返回 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

