私は本のコード例をいくつか持っていますが、著者は常に if の最後で continue を使用しています。
例:
int a = 5;
if(a == 5)
{
// some code
continue;
}
今、私にとってこれは意味がありません。その背後にある種の品質管理の理由があるのでしょうか、それとももっと大きなポイントを見逃しているだけなのでしょうか?
私は本のコード例をいくつか持っていますが、著者は常に if の最後で continue を使用しています。
例:
int a = 5;
if(a == 5)
{
// some code
continue;
}
今、私にとってこれは意味がありません。その背後にある種の品質管理の理由があるのでしょうか、それとももっと大きなポイントを見逃しているだけなのでしょうか?
コードのスニペットがループ ( for/while/do...while
) 内にあったのではないでしょうか? そうでなければ、条件文の中に aを入れても意味がありません。continue
実際のところ、孤立した continue
もの (例: ループ ステートメント内のどこかにネストされていないもの) はcontinue cannot be used outside of a loop
、コンパイル時にエラーを生成します。
Continue は、ループの次の反復に進むために使用されます。したがって、このようなことは理にかなっています。これで、どんな条件でも (あなたの条件は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);
}
ループの早期反復を強制すると便利な場合があります。つまり、ループの実行を続行したい場合がありますが、この特定の反復の本体の残りのコードの処理を停止します。これは、実際には、ループの本体を過ぎてループの最後に移動することです。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
通常、continue は、深くネストされたループをエスケープするため、または単にわかりやすくするために使用されます (議論の余地があります)。
空のループ本体をより明確にするために、continue がプレースホルダーとして使用されることもあります。
for (count = 0; foo.moreData(); count++)
continue;
個人的には使い続けないのは好みの問題です。