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