以下方法将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,我也返回一个布尔结果。问题是,即使满足了条件--添加了对象,它就没有问题--结果布尔值始终保持为假。为什么?我怎么才能改变呢?
发布于 2013-11-13 14:12:21
你需要一个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-13 14:10:45
可能什么都没有增加。它可能不是null,所以循环永远不会运行,这就是布尔值在完成时为false的原因。
实际上,这似乎是正确的行为,因为如果成员数组中没有空空间,则新元素不会覆盖现有元素,因此false在这里是正确的。
https://stackoverflow.com/questions/19965414
复制