回答问题:我在不知不觉中两次调用该方法。
private int findBranch(int branchNumber){
if(branches.size() == 0){
System.out.println("branches.size() == 0");
return 0;
}
for(int i=0; i<branches.size(); i++){
if(branches.get(i).getBranchNumber() == branchNumber){
System.out.println("Branch found");
return i;
}
}
System.out.println();
return -1;
}
此代码应该在ArrayList中搜索包含给定int的语言。
如果ArrayList为空,则应该返回0并停止。否则,它应该遍历ArrayList并检查每个元素是否存在给定的int。
如果找到int,它将返回它的索引。 如果未找到,则返回-1。
但是,我经常看到两个打印行的输出(“branches.size()== 0”和“找到分支”)
据我所知,这是不可能的。我做错了什么?
答案 0 :(得分:3)
如果ArrayList为空,则应该返回0并停止
列表和数组是0索引的,因此第一个元素的索引为0。
如果列表为空,您应该返回其他内容,例如-1
,以免与找到的元素位于第一个位置的情况混淆:
if (branches.size() == 0) {
System.out.println("branches.size() == 0");
return -1;
}
除此之外,这些println
语句中的任何一个只会在每次执行方法时运行一次,因为它们后面会紧跟return
语句。
答案 1 :(得分:0)
在不知不觉中,我两次调用该方法。
public void addNewBranch(int branchNumber) {
if(findBranch(branchNumber)<0 || branches.size() == 0) {
branches.add(new Branch(branchNumber));
lastBranchNumberAdded = branchNumber;
}
System.out.println("findbranch: "+ findBranch(branchNumber));
}
底部的System.out就在那里进行测试。我删除了它,正如预期的那样,我的所有问题都得到了解决。