以下方法将类型为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。为什么?我怎样才能改变它?
答案 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;
}