布尔方法并不像它应该的那样工作

时间:2017-07-02 09:55:53

标签: java

所以我真的不知道我在这里做错了什么。该方法应采用布尔数组并检查所有元素是否为真,如果为假,则应返回false。

public static boolean nvm(boolean[] con) {
    boolean c = true;

    for(int i = 0; i < con.length ; i++) {
        if (and(con[i], con[i++]) == false) {
            c = false;
        }
    }
    return c;
}

and检查两个布尔值,如果它们都为真,则返回true,否则为false。我已经测试了and,但它的工作正常。

在我的手机上写了这个帖子,所以我希望它看起来并不奇怪。感谢任何帮助。

4 个答案:

答案 0 :(得分:2)

  

该方法应采用布尔数组并检查是否所有元素都是   真

{{1}}

答案 1 :(得分:1)

问题出在这一行:

if(and(con[i],con[i++]) == false){

特别是i++部分。 i++实际上增加了i,所以你可能会跳过一些数组元素并得到错误的结果。改为使用i+1,这会使i保持不变。

此外,您可以像这样简化代码:

public static boolean nvm(boolean[] con) {
    for(int i = 0; i < con.length ; i++) {
        if (!con[i]) return false;
    }

    return true;
}

答案 2 :(得分:1)

也许我错过了一些东西,但

  

'该方法应采用布尔数组并检查所有元素是否为真,如果一个为假,则应返回false'

可以写成:

boolean[] array;
for(boolean a : array) {
  if(!a) { return false; }
}
return true;

答案 3 :(得分:1)

如果要检查所有元素是否都为真,则可以轻松简化代码。

public static boolean nvm(boolean[] con) {
    for(int i = 0; i<con.length ; i++) {
        If(!con[i]) {
            return false;
        }
    }
    return true;
}

我认为&#34;和&#34;没有任何理由。我只能看到它可能会导致你有一个idexoutofboundsexception。