2017-04-23 10 views
-2

質問:私は知らないうちにメソッドを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を含む要素をArrayListから検索することになっています。

ArrayListが空の場合、0を返して停止するはずです。さもなければ、それはArrayListを調べ、与えられたintの存在について各要素を調べることになっています。

intが見つかった場合は、そのインデックスを返します。 見つからない場合は-1を返します。

しかし、私は常に私の知る限り理解としては可能であるべきではないの両方プリントライン(「branches.size()== 0」と「見つかった支店」)

で出力を参照してください。私は間違って何をしていますか?

+5

'return'ステートメントを実行した後、メソッドが実行を継続できないことがあります。あなたはメソッドを2回呼び出しています。 –

+0

もっとコードを共有してください –

+1

findBranchメソッドを呼び出すコードを投稿できますか? – Rouliboy

答えて

3

ArrayListのが空の場合、最初の要素はインデックス0

を持つようにあなたが何かを返す必要があり、0を返し、

リストと配列が0インデックスされている停止することになっています他に見つかった要素が第1の位置にある場合と混同しないように、リストは、-1ように、空である場合:

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

それ以外は、printlnステートメントのいずれか1つは、returnステートメントの直後にメソッドの実行ごとに1回だけ実行されます。

0

無意識のうちに、私はメソッドを2回呼び出していました。

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はテストのためだけにありました。私はそれを削除し、予想どおり、すべての問題が解決されました。

関連する問題