2016-11-28 8 views
0

私のコードで私がしたいことをするのは苦労しています。私は、自転車の年齢、モデル、雇用数、および製造業者の詳細を含む配列リストを持っています。そのリストでは、私は一致する賃借人数で自転車を見つけて年齢を更新したいと思っています。一致するものが見つからない場合、「一致する自転車が見つかりません」と表示したいと思います。ここで私の問題は、私はそのメッセージを一度だけ印刷したいのですが、プログラムを実行するたびに複数回印刷されます。私はリスト全体を確認する方法を見つけたいと思います。一致する雇用番号がない場合は、「一致する自転車が見つかりませんでした」という印刷が一度だけ表示されます。配列全体を検索して1つのものを返す方法

public void updateAge(int hireNumber, int newAge) { 
    ArrayList<Bicycle> output = new ArrayList<>(); 
    for (Bicycle bicycle : bicycles){ 
     if (bicycle.getHireNumber()!=(hireNumber)){ 
      System.out.println("No matching bicycle found."); 
     } else { 
      bicycle.setAge(newAge); 
     } 
    } 
} 

答えて

2

、以下のように条件bicycle.getHireNumber() == hireNumberが満たされた場合は、isFoundフラグを宣言し、trueに設定することができます

ArrayList<Bicycle> output = new ArrayList<>(); 
boolean isFound = false; 

for(Bicycle bicycle : bicycles){ 
    if (bicycle.getHireNumber() == hireNumber) { 
      isFound = true; 
      bicycle.setAge(newAge); 
      return;//match found, so break & return 
    } 
    } 

//now check isFound is true, if not print it (only once) 
if(!isFound) { 
    System.out.println("No matching bicycle found."); 
} 
+0

は、ただでさえ '非常に多くなり、その –

+0

感謝をチェックif'返し、削除することもできます多くの意味。 – Peter

+0

@ScaryWombatありがとう、私は 'break'の代わりに' return'に更新しました – developer

関連する問題