2017-04-23 50 views
-2

问题得到解答:我在不知不觉中调用了该方法两次。我的方法在达到return语句时不停止

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; 
} 

此代码应该搜索包含给定int的alement的ArrayList。

如果ArrayList为空,它应该返回0并停止。否则,它应该遍历ArrayList并检查每个元素是否存在给定的int。

如果找到int,它将返回它的索引。 如果找不到,则返回-1。

不过,我经常看到两个printlines(“branches.size()== 0”和“发现分公司”)

这不应该如据我了解可能的输出。我究竟做错了什么?

+5

一个方法在执行'return'语句后继续运行是不可能的。你正在调用这个方法两次。 –

+0

请分享更多代码 –

+1

你可以发布调用findBranch方法的代码吗? – Rouliboy

回答

3

如果ArrayList中是空的,它应该返回0,并停止

列表和阵列0索引,从而使第一个元素的索引为0

你应该返回的东西在其他情况下,列表是空的,像-1,以免与案件混淆的地方找到的元素是在第一个位置:

if (branches.size() == 0) { 
    System.out.println("branches.size() == 0"); 
    return -1; 
} 

除此之外,这些println语句中的任何一个语句只会在您的方法执行时运行一次,因为它们后面紧跟着return语句。

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在底部只是为了测试。我删除了它,并且正如所料,我所有的问题都解决了。