2015-12-01 13 views
7

私はjavaを初めて使用しています。 私は成功なしで何かをしようとしています。 基本的には、trueまたはfalseを返すメソッドを作成します。このメソッドはいくつかのパラメータを取得し、特定の配列がいっぱいであるかどうかをチェックし、空でない最初のセルにパラメータをプッシュしない場合はtrueを返し、残りの配列をチェックしません。 配列がいっぱいの場合はfalseを返します。 これはコードです:trueを返してforループから抜け出す

public boolean add(param1, param2, param3){ 
for(int i = 0; i < array.length; i++){ 
    if (array[i] == null){ 
    array[i] = new SomeObject(param1, param2, param3); 
    return true; 
    break; 
    } 
    } 
    return false; 
} 

しかし、私はのためのエラー - "到達不能文の" GET "ブレイクを;"。 ヘルプがありますか?

ありがとうございます!

答えて

19

returnステートメントがあるので、returnステートメントはメソッドの実行を終了するので、ループからbreakする必要はありません。 breakステートメントを削除するだけです。

+1

ご意見ありがとうございました。したがって、基本的にメソッド内にreturn文があるたびに、たとえreturnが例えば3つのネストされたループの中にあっても、実行を終了しますか? – Avishay28

+2

@ Avishay28はい、 'return'は常にメソッドから復帰します。 –

2

単一の戻り点を持つ関数を主張する人もいるので、元の質問の見かけの期待に合わせて、関数を次のように再定式化することができます。

public boolean add(param1, param2, param3){ 
    boolean result = false; 
    for(int i = 0; i < array.length; i++){ 
     if (array[i] == null){ 
      array[i] = new SomeObject(param1, param2, param3); 
      result = true; 
      break; 
     } 
    } 
    return result; 
} 
+0

「結論」を大文字にしていますが、慣習からは激しい出発点ですが、健全なアプローチです。 –

+0

なぜ別の変数を作成するのですか?どのようにして元のコードを改善するのですか(もちろんbreak文なし) – Avishay28

+0

コメントをいただき、ありがとうございます。 – Codor

0

瞬間制御がreturn文に遭遇したのではい、それはちょうどので、return文の下に書かれた任意のコードがちょうどになる方法、スイッチやループなどの抜ける「到達不能。」したがって、必要でない限り(メソッドの)ブロックの最後に戻り値を配置することを常にお勧めします。文を返した後にコードを書き込まないことをお勧めします。

関連する問題