即使满足条件,布尔也不会改变

时间:2013-11-13 22:08:45

标签: java arrays boolean

以下方法将类型为Member的对象添加到数组中:

public boolean addMember(Member m) {
    boolean result = false;
        for(int i = 0; i < members.length; i++){
            if(members[i] == null){


                members[i] = m;
                result = true;
            }
        }


    return result;
}

如您所见,如果当前位置为null,我还会返回一个布尔结果。问题是,即使满足条件 - 添加了对象,它也没有问题 - 结果boolean始终保持为false。为什么?我怎样才能改变它?

2 个答案:

答案 0 :(得分:1)

可能没有添加任何内容。它开头可能不是null,所以循环永远不会运行,这就是完成时布尔值为false的原因。

实际上,这似乎是正确的行为,因为如果members数组中没有空格,则新元素不会覆盖现有元素,所以false在这里是正确的。

答案 1 :(得分:0)

您需要break

public boolean addMember(Member m) {
    boolean result = false;

    for (int i = 0; i < members.length; i++) {
        if (members[i] == null) {
            members[i] = m;
            result = true;
            break;
        }
    }

    return result;
}

或事件更好,不需要旗帜:

public boolean addMember(Member m) {
    for (int i = 0; i < members.length; i++) {
        if (members[i] == null) {
            members[i] = m;
            return true;
        }
    }

    return false;
}