我是Java新手,正在学习带有return语句的方法。 我的IDE说:
此方法必须返回boolean类型的结果
但是,我的方法仅返回布尔值。如何解决?
public class Test {
public static void main(String[] aargs) {
debug(4, 5);
}
public static boolean debug(int a, int b) {
if(a+b == 12) {
return true;
}else if(a+b == 18){
return false;
}
a = 8;
}
}
答案 0 :(得分:2)
退货后您没有任何代码。警告是说您缺少回报
注意:不建议您更改参数a = 8;
,但是如果您的if语句均未输入,则必须返回 something 。在这种情况下,在该行之后是对还是错
您可能还想捕获debug(4, 5);
答案 1 :(得分:1)
编译器试图(以自己的方式)告诉您else
情况(a+b != 12 && a+b != 18
)陷入a=8
行,并且该代码分支缺少return
声明。
Java编译器在进行程序流分析时非常聪明,因此当它告诉您出了什么问题时,则确实有错。
答案 2 :(得分:1)
每个可能的执行路径都应以return
语句结尾。
在这种情况下,并非所有路径都返回值。如果a + b既不是12也不是18,它将掉到a=8
行。后面没有return
语句,它只是直到方法的结尾。在这种情况下,编译器不知道应该返回什么,因此会发出错误。
答案 3 :(得分:0)
如果要返回任何值,则return将是方法的最后一个语句。您的方法需要在此处返回一些值。 让我们来设想一个场景:如果两个条件都错误,那该怎么办呢?
答案 4 :(得分:0)
想想如果调用debug(0,0)会发生什么。这两个if语句均未执行,因此debug方法不会返回任何内容。
您必须在每个可能的分支中返回一些布尔值。
答案 5 :(得分:0)
如果两个条件均失败,将返回什么?如果两种情况均失败,则代码不会返回任何内容。因此,您应该为此退货。您必须为所有可能的条件返回值。
答案 6 :(得分:0)
这是Java的设计模式。 return语句后,我们无法编写任何代码。如果您尝试使用此代码进行编译,则编译将失败。引发异常也是如此。
这是因为在返回或引发异常语句之后,控件将转到调用者位置。因此这些行将无法执行。
在这种情况下,您必须返回一些布尔值。
代码应像这样
public static boolean debug(int a, int b) {
boolean flag = false;
if(a+b == 12) {
flag = true;
}else if(a+b == 18){
flag = false;
}
a = 8;
return flag;
}
答案 7 :(得分:-2)
您可以写一个= 8;在else块中。