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确定,它修复了“多次存储”错误。然而,这可能不是所述行为的真正原因。