在Java中,我无法在方法的return语句之后添加代码

时间:2018-10-03 14:01:04

标签: java

我是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;
}

}

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块中。