VB.NETのWhile文の使い方(繰り返し処理/抜ける/スキップ)

VB.NET VB.NET

VB.NETのWhile文について、書いています。
While文の使い方をコード例とともに解説しています。

VB.NETのWhile文の使い方

While文は、条件があっている(True)である間、指定された処理を繰り返し実行するために使用されます。
基本的な構文は次のとおりです。

While [条件]
    ' 繰り返し実行する処理
End While

条件にあっている間(Trueである限り)、While文の内部の処理が繰り返されます。
条件があわなくなる(Falseになる)と、ループが終了します。

基本的な例

まず、基本的なWhile文の例を見てみましょう。
次のコードは、1から5までの数字を出力します。

Dim counter As Integer = 1

While counter <= 5
    Console.WriteLine(counter)
    counter += 1
End While

このコードでは、counter変数が「1」から始まり、While文の内部で毎回1ずつ増加していきます。
次にWhile文を使っています、counterが5以下である限りループが続きます。

counter変数の値を出力した後に、「1」ずつカウントアップしています。
counter変数の値が「5」になるとループを抜けます。

実行結果は次のようになります。

1
2
3
4
5

counter変数の値が「5」になるまで、処理が繰り返されたことが確認できました。

While文の無限ループに注意

条件が常にあっている(True)の場合、While文は無限ループになります。
無限ループに陥らないように、ループ内で条件を変更する処理を忘れないようにしましょう。

例えば、次のコードは無限ループになります。

Dim counter As Integer = 1

While counter <= 5
    Console.WriteLine(counter)
    ' counterを増やす処理がないため、無限ループになる
End While

無限ループにならないように、counterを増やす処理を追加が必要です。

このようにWhile文は条件を抜ける定義が必要です。
単純に繰り返し処理するなら、初期値を設定できるForや、配列やリストをループするFor Eachも検討してみて下さい。

処理途中でWhile文を抜けるには?(Exit While)

While文の処理途中でループを終了するには、Exit While文を使用します。
次の例では、counter変数が「3」になった時点でループを終了します。

Dim counter As Integer = 1

While counter <= 5
    If counter = 3 Then
        Exit While
    End If
    Console.WriteLine(counter)
    counter += 1
End While

counter変数が「5」になるまでの繰り返し条件ですが
counter変数が「3」のときにExit While文が実行されて処理を抜けます。

このコードを実行すると、次のようになります。

1
2

counter変数が「3」になったら処理を抜けることが確認できました。

While文で処理をスキップするには?(Continue While)

While文の処理中に特定の条件で処理をスキップし、次のループに進むにはContinue While文を使用します。
次の例では、counter変数が「3」の場合は処理をスキップします。

Dim counter As Integer = 1

While counter <= 5
    If counter = 3 Then
        counter += 1
        Continue While
    End If
    Console.WriteLine(counter)
    counter += 1
End While

こちらもcounter変数が「5」になるまでの繰り返し条件です。
counter変数が「3」のときにContinue While文が実行されて、処理をスキップします。

このコードを実行すると、次のようになります。

1
2
4
5

counter変数が「3」になったら処理をスキップすることが確認できました。

While文の実用例

下記のプログラムはユーザーが「0」を入力するまで繰り返すプログラムの例を示します。

Dim input As Integer = 1

While input <> 0
    Console.Write("数値を入力してください (0入力で終わります): ")
    input = Convert.ToInt32(Console.ReadLine())
    If input <> 0 Then
        Console.WriteLine("入力した数値: " & input)
    End If
End While

このプログラムは、ユーザーが「0」を入力するまで数値を入力させ、その数値を出力します。
「0」を入力するとループが終了します。

このように意図的に無限ループをつくるような場面では使用することがあるかと思います。

まとめ

While文は、指定された条件がTrueである間、処理を繰り返すために使用される便利な構文です。
無限ループを避けるための条件設定や、途中でループを抜けるExit While、処理をスキップするContinue Whileなど、適切に使用することで効果的なループ処理が可能になります。

条件文などを書くのが簡単で、バグを作りにくいので、基本的にはFor文を使う方がよいかと思います。
また、配列やリストの要素分処理をしたいときにはFor Each文を使っていきましょう。

コメント

タイトルとURLをコピーしました