【C#入門】繰り返しの流れを途中で変える処理について分かりやすいサンプルコードで徹底解説①
今回は繰り返しの流れを途中で変える処理について紹介します。
繰り返しの途中で、「ここで処理を終わらせたい」という場合には、ループから抜け出すことも可能です。
C#には、繰り返し制御を補助する3つのジャンプ文が用意されています。
今回はbreak文とcontinue文について紹介します。
break文
break文は、switch文でも使われますが、
繰り返しを特定の条件で中断してループから脱出するときにも使われます。
1 2 3 4 5 6 7 |
繰り返し { 処理1 if(条件式) break; 処理2 } |
break文を使った例を示してみましょう。
このプログラムは、 数値を10回入力して合計を求めますが、負数が入力されたらループを中断します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
static void Main(string[] args) { int n, sum = 0; Console.WriteLine(“整数値を10回入力してください。); Console.WriteLine("途中で負数を入力したら終了します。"); for (int i = 1; i <= 10; i++) { Console.Write(">"); n = int.Parse(Console.ReadLine()); if (n < 0) break; sum += n; } Console.writeLine($"合計値は{sum}です。); } |
breakの実行結果
break文を多重ループの中で使用する場合には、
そのbreak文が含まれるループのループに抜け出すだけなので注意してください。
多重ループから抜け出すには、そのたびにbreak文を使うか、次回紹介するgoto文を使います。
continue文
それ以降の文をスキップし、次のループ処理を行うには、continue文を使います。
特定の入力値を受け付けたくない場合などに用いると便利です。
1 2 3 4 5 6 7 8 |
繰り返し { 処理1 if(条件式) continue; //それ以降の処理をスキップする 処理2 } |
次のコードは1000を入力値で5回割る処理を行うものですが、
0で割るゼロ除算を避けるため、割る数に0を入力したらcontinue文で割り算の処理をスキップし、
再入力させるようになっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
static void Main(string[] args) { int n, div = 1000; Console.WriteLine("整数値を5回入力してください。"); for (int i = 1; i <= 5; i++) { Console.Write("> "); n = int.Parse(Console.ReadLine()); if (n == 0) { Console.WriteLine("0では割れません。再入力してください。"); continue; } Console.Write($" <div} / {n} = "); div /= n; Console.WriteLine(div); } } |
continue(for文使用)の実行結果
同じ内容をforではなく、whileで書いてみると
で書いてみるとどうなるでしょうか。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
static void Main(string[] args) { int n, div = 1000; Console.WriteLine("整数値を5回入力してください。"); int i = 1; while (i <= 5) { Console.Write("> "); n = int.Parse(Console.ReadLine()); if (n == 0) { Console.WriteLine("0では割れません。再入力してください。"); continue; } Console.Write($" <div} / {n} = "); div /= n; Console.WriteLine(div); i++; } } |
continue(while文使用)の実行結果
for文で書いたコードは、0を入力した場合も含めて5回繰り返しました。
けれども、while文では、0を入力した場合は含めずに5回繰り返しています。
forループ中のcontinueではカウンタ変数の更新に戻りますが、
whileとdo-whileでは、continueでただちにループの先頭に戻るので、このような違いが出てくるのです。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。