0

以下方法将类型的对象添加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;
}

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

4

2 回答 2

1

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

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

于 2013-11-13T22:10:45.197 回答
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;
}
于 2013-11-13T22:12:21.803 回答