web-dev-qa-db-ja.com

Java ifの最後に続く

本のサンプルコードがいくつかあり、著者は常にifの最後に継続を使用しています。

例:

int a = 5;
if(a == 5)
{
// some code
continue;
}

私にとって、これは意味がありません。その背後にある種の品質管理の理由があるのでしょうか、それとももっと大きなポイントを見逃しているだけなのでしょうか?

9
John Frost

おそらく、そのコードスニペットはループ(for/while/do...while)内にありましたか?それ以外の場合はnotを実行し、continueを条件ステートメント内に配置することは理にかなっています。

実際、孤立したcontinue(例:ループステートメント内のどこかにネストされていないもの)は、コンパイル時にcontinue cannot be used outside of a loopエラーを生成します。

21
Óscar López

継続は、ループの次の反復に進むために使用されます。したがって、このようなものは理にかなっています。これで、今までの条件を使用できます(あなたの条件はa==5で中断します)、そしてあなたが望むあらゆるビジネスロジック(私のものはばかげた、不自然な例です)。

StringBuilder sb = new StringBuilder();
for(String str : strings) {
    sb.append(str);
    if(str.length() == 0) continue; // next loop if empty

    str = str.substring(1);
    sb.append(str);
    if(str.length() == 0) continue; // next loop if empty

    str = str.substring(1);
    sb.append(str);
    if(str.length() == 0) continue; // next loop if empty

    sb.append(str);
}
5
corsiKa

ループの初期反復を強制することが役立つ場合があります。つまり、ループの実行を継続したいが、この特定の反復でコードの本体の残りの部分の処理を停止する場合があります。これは、事実上、ループの本体を通過した後、ループの終わりに到達するためのgotoです。 continueステートメントはそのようなアクションを実行します。 whileおよびdo-whileループでは、continueステートメントによって、ループを制御する条件式に制御が直接転送されます。 forループでは、制御はまずforステートメントの反復部分に移り、次に条件式に移ります。 3つのループすべてについて、中間コードはバイパスされます。次に、continueを使用して各行に2つの数値を出力するプログラムの例を示します。

class Continue
{ 
public static void main(String args[]) 
    { 
    for(int i=0; i<10; i++) 
        { 
    System.out.print(i + " "); 
    if (i%2 == 0)
    continue; 
    System.out.println(""); 
        } 
    } 
}

このコードは%演算子を使用して、iが偶数かどうかを確認します。そうである場合、ループは改行を出力せずに続行されます。このプログラムからの出力は次のとおりです。

0 1
2 3
4 5
6 7
8 9

2
Abhishekkumar

通常、continueは深くネストされたループをエスケープするために、または単に明確にするために使用されます(議論の余地があります)。

空の ループボディを明確にする にするために、continueがプレースホルダーとして使用されることもあります。

for (count = 0; foo.moreData(); count++)
  continue;

個人的には使っていない好みの問題です。

0
dreamcrash