如何在java中返回布尔值(基元)?

如何在java中返回布尔值(基元)?,java,Java,我是java新手,因此,我不完全确定我是否做对了。我要做的是找出字符串列表中的项数是否为偶数,是否为基元 public class LearnAboutInputs { public boolean isEven(String[] value) { if (value.size() % 2 == 0 && boolean == true) { return true; } else { re

我是java新手,因此,我不完全确定我是否做对了。我要做的是找出字符串列表中的项数是否为偶数,是否为基元

public class LearnAboutInputs { 
    public boolean isEven(String[] value) {
        if (value.size() % 2 == 0 && boolean == true) {
            return true;
        } else {
            return false;
        }
    }
}

你的代码几乎是正确的。我修复了一些语法错误,但我不确定您想用
boolean==true
做什么。确保您的输入有效也是很好的做法

public class LearnAboutInputs { 
    public boolean isEven(String[] value) {
        if (value == null) {
            return false;
        }
        if (value.length % 2 == 0) {
            return true;
        }
        else {
            return false;
        }
    }
}

你放在那里的东西是无效的。使其有效的最小编辑是:

public class LearnAboutInputs { 
    public boolean isEven(String[] value) {
        if(value.length % 2 == 0) {
            return true;
        }
        else {
            return false;
        }
这假设您打算查看数组的长度,而不是查看一个或多个字符串的size()

但是,if检查本身是布尔值,因此您可以更简洁地编写:

public class LearnAboutInputs { 
    public boolean isEven(String[] value) {
        return value.length % 2 == 0;
    }
SeeDart和ToxinedYouth提出了一个关于空检查的好观点,因此将其添加到简洁的示例中会导致:

public class LearnAboutInputs { 
    public boolean isEven(String[] value) {
        return value != null && value.length % 2 == 0;
    }
如果该值为null,则该语句将短路为false,因此不会计算后半部分,从而使其有效

如果要返回类的对象而不是布尔值,请将返回类型从小写的“boolean”更改为大写的“boolean”字。方便的功能将为您完成腿部工作

public class LearnAboutInputs { 
    public Boolean isEven(String[] value) {  // Return object rather than primitive.
        return value != null && value.length % 2 == 0;  // Autoboxing transforms the generated `boolean` primitive value into a `Boolean` object.
    }

这里有各种各样的东西。让我们重写:

public class LearnAboutInputs { 
  public boolean hasEvenLength(String[] value) {
    if (value != null && value.length % 2 == 0) {
      return true;
    }
    return false;
  }
}
此处的合理更改:

  • 更改方法名称以说明该方法正在执行的操作
  • 避免else块;这里根本不需要——并且没有else块,这使得可能的控制流看起来更加清晰

您所说的“字符串列表中的项数是…一个基本体”是什么意思?
boolean
是布尔类型的保留字。你不能把它当作一个变量。您认为
boolean==true
应该做什么?删除“&&boolean==true”,为参数添加空检查,方法将按预期工作。但是不理解后面的问题如果你不理解提供的所有答案,请不要感到难过!这是随时间而来的事情,但也是为什么编码是如此美丽,但令人困惑的事情!正如您所看到的,有许多方法可以完成相同的任务!缺少空值check@poisonedYouth我按下按钮时想到了这一点。不过,谢谢!我想知道布尔和布尔之间有区别,对吗?一个是对象,另一个是原语。那么,Java如何知道我想要返回到一个原语而不是一个对象呢?Java(以及一般的计算机)永远不知道你想要什么,它只知道你告诉它什么。在本例中,您已经告诉它,该方法在您的方法签名中返回一个原始布尔类型,而Java正是这样做的!话虽如此,如果您真的想要布尔对象,我相信您所需要做的就是将该方法设置为布尔类型,并将为您完成这些工作。为什么不编写
返回值!=null&&value.length%2==0?如果
value
null
,会发生什么?第二,我的回答是基于问题的层次。虽然你的答案对大多数人来说更易读,但对某些人来说,理解我发布的更详细的代码可能更容易。当返回
value==null
->
false
时,我正在对你的文章进行预编辑,而你没有进行null检查。