使用if / else语句返回布尔值

时间:2014-10-23 14:59:52

标签: java oop if-statement boolean

我有一个方法,它将数组作为参数并返回一个布尔值。

在方法内部,我有一个if / else语句。如果语句为true,我希望结果返回true,如果语句为false,我希望语句返回false。

public static boolean allPositive (double[] arr)
{
    for (int i = 0; i < arr.length; i++)
    {
        if(arr[i] > 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    return //What do i put here?
}

}

当然,最后需要一个返回值。但是,我对我应该在底部返回的内容感到困惑。我该怎么改写这个?

4 个答案:

答案 0 :(得分:4)

首先,您的代码是错误的。例如,使用{1, -1, 2},您的方法将返回true。

如果你用不同的方式写,你可以避免这个问题:

public static boolean allPositive (double[] arr) {
  for (int i = 0; i < arr.length; i++) {
    if(arr[i] < 0)
    {
        return false;
    }
  }
  return true;
}

编辑:甚至更好,使用Java 8和Streams的单行解决方案(我喜欢单行解决方案):

public static boolean allPositive (double[] arr) {
  //Stream the array and see if any elements matches condition `<0`.
  return !Arrays.stream(arr).anyMatch(i->i<0);
}

如果您需要多行代码才能使用集合,那么您应该了解Streams

答案 1 :(得分:1)

public static boolean allPositive (double[] arr)
{

    boolean b = true;

    for (int i = 0; i < arr.length; i++)
    {
        if(!(arr[i] > 0))
        {
            b = false;
        }

    }
    return b;
}

Java的工作方式,通过确保所有返回发生在if else语句之外,确保代码没有问题。这是因为,程序员常见的错误是返回if else语句,但从不创建else条件,因此该方法永远不会返回任何内容。这样做是一个很好的做法,所以你以后不要试图找出一个方法不会返回的原因。

答案 2 :(得分:0)

如果将空数组传递给方法,则必须在方法结束时(循环之后)返回应返回的值。您可以自行决定空数组是否为“allPositive”。

答案 3 :(得分:0)

Arnaud的回答有多个回复陈述。代码味道。如果数组为{1,-1,2},则DreadHeadedDeveloper的答案有一个逻辑错误,它返回true。

这个功能/方法很简洁,遵循良好的编码习惯。

public static boolean allPositive (double[] arr) {
    boolean ret = true;
    for (int i = 0; i < arr.length; i++) {
        if(arr[i] <= 0) {
            ret = false;
        }
    }
    return ret;
}