Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 布尔元';即使条件满足,也不能改变_Java_Arrays_Boolean - Fatal编程技术网

Java 布尔元';即使条件满足,也不能改变

Java 布尔元';即使条件满足,也不能改变,java,arrays,boolean,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;

以下方法将
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;
}
public boolean addMember(成员m){
布尔结果=假;
for(int i=0;i

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

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


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

您需要一个
中断

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(成员m){
布尔结果=假;
for(int i=0;i
或者更好,不需要旗帜:

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

    return false;
}
public boolean addMember(成员m){
for(int i=0;i
为什么要使用数组而不是
列表
甚至
集合
?其次,使用列表。另外,你这样做不会在第一个空位置添加元素,而是用它填充整个数组,因为你不会中断循环。你需要一个
中断
:-)@m0skit0我认为OP的问题是它从未返回true,即循环从未运行/数组中没有空值oO@samoz不它确实改变了逻辑。@samoz使用此逻辑,在找到第一个空值后,不会改变成员的值。@samoz确定,它修复了“多次存储”错误。然而,这可能不是所述行为的真正原因。