2016-05-27 4 views
1

Eclipseが「i ++」がデッド・コードであり、なぜ増分されていないのかがわかりません。forループがループしないのはなぜですか?私のforループ・ラインはデッド・コードとみなされます

for(int i = 0; i < holdings.length; i++) 
      { 
       if(holdings[i].holdingID.equals(userHoldingIDInput) == true) 
       { 
        holdings[i].print(); 
        System.out.println(); 
        return; 
       } 
       else 
       { 
        System.out.println("The Holding ID you entered was not found," 
          + " please try again." + "\n"); 
        return; 
       } 
      } 

私が間違って解決したことを誰かに説明してもらえますか?ありがとうございました!

+0

注: 'if(something == true)'は冗長です: 'if(something)'と書くことができます。 –

+0

@AndyTurnerそれを削除するのを忘れてしまった、ありがとう。 –

答えて

5

復帰条件付き終わりに支店の両方:

if (...) { 
    // ... 
    return; 
} else { 
    // ... 
    return; 
} 

のでi++がインクリメントされることはないだろう。 equivalent to the while loopある

for (ForInit ; Expression ; ForUpdate) Statement 

だから、
{ 
    ForInit; 
    while (Expression) { 
    Statement; 
    ForUpdate; 
    } 
} 

Statementは無条件ForUpdateが実行されることはありません、戻って、それが正しく識別された場合basic for statementの一般的な構造であることを

注意デッドコードとして。


私はあなたがするつもり正確にわからないが、私はあなたのelse分岐が実際にループの外でなければならないことだと思う:あなたの条件の両方から戻ってきている

for(int i = 0; i < holdings.length; i++) { 
    if (holdings[i].holdingID.equals(userHoldingIDInput)) { 
    // ... 
    return; 
    } 
} 
System.out.println("The Holding ID you entered was not found," 
         + " please try again." + "\n"); 
return; // Might be unnecessary; depends upon what follows. 
+0

よろしくお願いいたします。以前の問題を修正したと思ったので、リターンを追加しましたが、別の問題が生じました。ありがとうございました! –

+0

コードで何をしようとしているのかわからないにもかかわらず、forループの外側にelseブランチを置き、ifステートメントでリターンを保持すると、私のプログラムで他の問題が実際に修正されました。 –

+0

@ C.スミス大歓迎です。答えを受け入れることを検討してください。 –

0

。 i ++はループの次の反復で評価されます。これは決して起こりませんので、あなたのIDEはそれがデッドコードであることを示唆しています。

関連する問題