【问题标题】:How do I return boolean in Java?如何在 Java 中返回布尔值?
【发布时间】:2013-03-28 03:06:53
【问题描述】:
public boolean isOdd (int value) {
    if ((value % 2)== 0){ 
        return false; 
    } else if ((value % 2) > 0){ 
        return true; 
    }
} 

我收到一条错误消息: 私有布尔 isOdd(int value) 抛出异常 { ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 此方法必须返回布尔类型的结果

我试过了:

public boolean isOdd (int value) {
    boolean isOdd =  ((value % 2) > 0);
    return true; 
} 

public boolean isEven (int value) {
    boolean isEven = ((value % 2) > 0);
    return true;
} 

它只返回 true 作为输出。

我不知道我在这里做错了什么!

【问题讨论】:

标签: java if-statement boolean


【解决方案1】:

你也可以这样做:

public boolean isOdd (int value) {
    if ((value % 2) == 0)
        return false; 
    return true; 
} 

【讨论】:

    【解决方案2】:

    如果您添加 else 语句,编译错误将消失,即

    if ((value % 2)== 0) { 
        return false;
    } else if ((value % 2) > 0){ 
       return true;
    } else {
       return ??; // default value
    }
    

    【讨论】:

    • -trueFileNotFound?
    【解决方案3】:

    您需要一个 else 或至少另一个 return。如果您的两个 if 语句都不匹配,则不会返回任何内容,这是不允许的。

    public boolean isOdd (int value) {
    
    if ((value % 2)== 0){ 
    return false; } 
    
    else if ((value % 2) > 0){ 
    return true; }
    
    return true;
    
    }
    

    您可以用以下方法替换该方法:

    public boolean isOdd (int value) {
    return (value % 2) != 0; }
    

    【讨论】:

      【解决方案4】:

      做事

      public boolean isOdd(int value) {
          return (value % 2) != 0;
      }
      

      【讨论】:

        【解决方案5】:

        您的第一个代码 sn-p 导致错误,因为您没有满足 else 的情况。您在这里不需要else if,因为您希望在不满足 if 语句的所有情况下都执行第二个条件。尝试将其更改为:

        public boolean isOdd (int value) {
        
            if ((value % 2)== 0){ 
                return false; 
            } 
            else { return true; }
        
        } 
        

        或更简单地说:

        public boolean isOdd (int value) {
            return ((value % 2) != 0);
        }
        

        【讨论】:

        • 更一般地,错误消息应该首先被视为方法逻辑存在问题的指示。有一种方法可以达到程序员没有想到的方法的结尾。找到并解决这个问题,就像在这个答案中一样,通常会比反射性地添加 else 子句或 return 语句更简单、更清晰的代码。
        • 嗯,我知道第二个比第一个简单得多,但是什么是!应该是?而 ((value % 2) != 0) 如何判断是返回真还是假?
        • ! 应该读作“不”。所以(value % 2) != 0 应该读作“值 mod 2 不等于 0”,并且该语句是真或假,所以它本身就是一个 boolean
        【解决方案6】:

        如果((value % 2) < 0) 怎么办?你没有考虑到这种可能性,如果发生这种情况,就没有返回路径。

        【讨论】:

          【解决方案7】:
          public boolean isEven (int value) {
            return value%2==0;
          } 
          
          public boolean isOdd (int value) {
            return value%2!=0;
          } 
          

          【讨论】:

            【解决方案8】:

            您需要在第一个 sn-p 中添加一个默认返回值,也就是不在任何 if 中的返回值。

            【讨论】:

            • 我不知道该怎么做,但我还是解决了这个问题,谢谢你的回答!
            • 查看随机的答案,了解如何设置默认值的示例。理解这一点非常重要,因为所有 Java 方法(void 除外)都必须返回默认值。
            猜你喜欢
            • 2015-02-14
            • 2021-04-04
            • 1970-01-01
            • 2022-01-17
            • 1970-01-01
            • 2015-01-04
            • 2016-09-03
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多