Java——必须返回boolean类型(但我要返回true或false)

Java——必须返回boolean类型(但我要返回true或false),java,boolean,return,Java,Boolean,Return,} 我很困惑,为什么我会得到一个错误,其中公共方法parrotTrouble加下划线表示它必须返回一个布尔值,而我现在有这个布尔值?编译器说您需要返回一些值,因为您的方法返回类型是布尔值 您在If条件下返回了false,在else If条件下返回了true 您还需要返回if/else if之外的内容。 根据@Andreas的评论,代码可以简化为以下内容 根据OP的原件 public class CodingBat { public static void main(String[] args){

}


我很困惑,为什么我会得到一个错误,其中公共方法parrotTrouble加下划线表示它必须返回一个布尔值,而我现在有这个布尔值?

编译器说您需要返回一些值,因为您的方法返回类型是
布尔值

您在If条件下返回了false,在else If条件下返回了true

您还需要返回if/else if之外的内容。

根据@Andreas的评论,代码可以简化为以下内容

根据OP的原件

public class CodingBat {
public static void main(String[] args){
    CodingBat object = new CodingBat();
    System.out.print(object.parrotTrouble(true,20));
}
public boolean parrotTrouble(boolean talking, int hour) {
    if(talking == false){
        return false;
        }
        else if(hour > 7 || hour >20){
            return true;
            }
    }
编辑

public boolean parrotTrouble(boolean talking, int hour) {
        if (talking == false) {
            return false;
        } else if (hour > 7 || hour > 20) {
            return true;
        }
        return booleanValue; // can be true/false as per your logic
    }
正如@Codebender所指出的,如果出现其他情况,则使用
,然后不使用
需要在最后返回布尔值,但如果使用
if-
否则,如果
,则必须在最后返回布尔值。就像编译器一样 也不确定它是否会在某个条件下运行

public boolean parrotTrouble(布尔语言,整数小时){
布尔答案=假;
if(talking==false){
答案=错误;
}
否则,如果(小时<7 | |小时>20){
答案=正确;
}
返回答案;
}

谢谢你的帮助,我将我的代码改成了这个,它工作正常,回答了第三种可能性的问题,编译器不知道是否会始终满足其他条件之一,因此它要求你提供第三个/故障安全条件测试
hour>20
将永远不会被检查,因为
hour>7
在hour>20时总是正确的。实际上没有
else
条件,只有
else如果
。。。事实上,这就是问题所在。。。如果他有一个
else
,它会正常运行…@MichaelCowie yes code很好,您只需要用一些默认值初始化变量
answer
boolean答案=false
当然,明显的退路是
return false
,因为鹦鹉在白天不会造成麻烦(假设检查被更正为
小时<7
),所以它可以压缩为
return(说话&(小时<7 | |小时>20))——另外,您应该将代码改回使用
boolean
,而不是
boolean
,作为参数。@Andreas正确地指出、制作和编辑,
boolean
我正在试验一些东西,所以输入错误
public boolean parrotTrouble(boolean talking, int hour) {
        return (talking && (hour > 7 || hour > 20));
    }
public boolean parrotTrouble(boolean talking, int hour) {
    boolean answer = false;
    if(talking == false){
        answer = false;
        }
        else if(hour < 7 || hour >20){
            answer = true;
            }
    return answer;
    }