【问题标题】:Java -- Must return type boolean (But I am returning true or false)Java——必须返回布尔类型(但我返回的是真或假)
【发布时间】:2016-03-15 14:09:17
【问题描述】:
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;
            }
    }

}

我很困惑,为什么在公共方法 parrotTrouble 下划线的地方出现错误,说它必须返回一个布尔值,而我目前有这个?

【问题讨论】:

  • 有第三种可能性,编译器不知道是否总是满足其他条件之一,因此需要您提供第三种/失败安全条件
  • 永远不会检查测试 hour > 20,因为当小时 > 20 时,hour > 7 始终为真。

标签: java boolean return


【解决方案1】:

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

你有returned false in If conditionreturn true in else if condition

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

如下所示,根据@Andreas 的 cmets,代码可以简化为以下内容

根据 OP 原创

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
    }

编辑

public boolean parrotTrouble(boolean talking, int hour) {
        return (talking && (hour > 7 || hour > 20));
    }

正如@Codebender 所指出的,使用if else condition,然后不使用 最后需要返回布尔值,但如果您使用if - else if,则必须最后返回布尔值。由于编译器是 也不确定它肯定会满足其中一种条件。

【讨论】:

  • 实际上没有else 条件,只有else if...实际上这就是问题...如果他有else,它会正常运行...跨度>
  • @MichaelCowie 是的,代码很好,你只需要用一些默认值初始化变量answerboolean answer = false;
  • 当然,明显的fallback是return false,由于parrot白天不会惹事(假设check被更正为hour < 7),所以可以浓缩为@ 987654335@。 --- 另外,您应该将代码改回使用boolean,而不是Boolean,作为参数。
  • @Andreas 正确指出、制作和编辑,Boolean 我正在尝试一些东西,所以拼写错误
【解决方案2】:
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;
    }

感谢您的帮助,我将代码更改为此代码,它可以正常工作并回答了问题

【讨论】:

    猜你喜欢
    • 2022-10-05
    • 1970-01-01
    • 2013-11-29
    • 2013-11-24
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 2020-08-08
    • 2015-09-01
    相关资源
    最近更新 更多