今回はJavaでwhile文を使って、繰り返し処理(ループ)をする方法について書いています。
また、while文の他にdo while文や、while文で使うbreak, continueなどの制御文についても書いています。
while文を使うことで、while文の配下の処理を繰り返すことができます。
載せているコードについては、OpenJDKのバージョン19で動作を確認しました。
while文の使い方
while文には条件式を指定することで、条件に合う間(trueになる)は処理を繰り返すことができます。
例えば、下記のように使います。
int i = 0;
while (i < 6) {
System.out.println("変数iは「" + i + "」です。");
i++;
}
最初に変数iに0を代入しています。
次の処理で、while文を使っています。
「i < 6
」と指定しているので、変数iが「6」未満の場合に処理を繰り返します。
while文の中では、変数iの値をメッセージと一緒に出力しています。
そして、変数iの値をカウントアップしています。
条件が変わらずに、条件がずっと合っている(true)の状態になると無限ループしてしまいます。
今回のようにカウントアップするなどして、処理を抜けるように気をつけましょう。
プログラムを実行すると、下記のように出力されました。
変数iは「0」です。
変数iは「1」です。
変数iは「2」です。
変数iは「3」です。
変数iは「4」です。
変数iは「5」です。
変数iが初期値の「0」から繰り返す(ループ)たびに、カウントアップされていることが確認できました。
while文でのbreakとは?
while文でbreakを使うと、breakを呼び出した瞬間に、繰り返し処理を抜けることができます。
例えば、下記のように使います。
int i = 0;
while (i < 6) {
if (i == 3) {
break;
}
System.out.println("変数iは「" + i + "」です。");
i++;
}
最初に変数iに0を代入しています。
次の処理で、先ほどと同じように、変数iが「6」未満の間は繰り返すようにしました。
そして、変数iが「3」のときにbreakするようにしています。
そのため、「0」から「2」まで繰り返して、「3」で処理を抜けます。
プログラムを実行すると、下記のように出力されました。
変数iは「0」です。
変数iは「1」です。
変数iは「2」です。
変数iの値が「3」になったときに、breakが呼ばれて処理を抜けたことが確認できました。
while文でのcontinueとは?
while文でcontinueを使うと、continueを呼び出した瞬間に、繰り返し処理の先頭に戻って、処理を再開します。
例えば、下記のように使います。
int i = 0;
while (i < 6) {
if (i == 2 || i == 4) {
i++;
continue;
}
System.out.println("変数iは「" + i + "」です。");
i++;
}
先ほどと同じように、変数iが「6」未満の間は繰り返すようにしました。
繰り返し処理の中で、変数iが「2」または「4」だったら、カウントアップしてcontinueしています。
for文と違いカウントアップされないため、カウントアップするのを忘れたら、無限ループになってしまうので気をつけましょう。
これで、変数iが「2」または「4」のときには、繰り返し処理の先頭に戻ってくれます。
プログラムを実行すると、下記のように出力されました。
変数iは「0」です。
変数iは「1」です。
変数iは「3」です。
変数iは「5」です。
変数iの値が「2」または「4」のときには出力されていません。
変数iの値が「2」または「4」になったときに、continueが呼ばれてループの先頭に戻ったことが確認できました。
do while文とは?
do while文はwhile文に似ていますが、こちらは1度は必ず実行される処理を書くことができます。
例えば、下記のように使うことができます。
int i = 0;
do {
System.out.println("変数iは「" + i + "」です。");
i++;
} while (i < 6);
最初に変数iに0を代入しています。
次の処理でdo while文を使っています。
最初にdoを書いて、繰り返したい箇所を波括弧「{}
」で囲みました。
値をメッセージと一緒に出力して、カウントアップしています。
最後に「i < 6
」というように、条件を確認しています。
このため、変数iが「6」未満の間は繰り返されます。
プログラムを実行すると、下記のように出力されました。
変数iは「0」です。
変数iは「1」です。
変数iは「2」です。
変数iは「3」です。
変数iは「4」です。
変数iは「5」です。
変数iが「0」から「5」までの6回繰り返されたことが確認できました。
while文とは違うのか?
do while文の特徴は、繰り返し条件を最後に判定しているところです。
そのため、最初の1回は条件に合わないときでも、必ず実行されます。
例えば、先ほどのプログラムを下記のように修正します。
int i = 7;
do {
System.out.println("変数iは「" + i + "」です。");
i++;
} while (i < 6);
変数iに「7」を代入しています。
「i < 6
」で比べると、繰り返し条件に合いません。
while文だと実行されませんが、do while文のときには最初の1回は実行して判定します。
そのため、下記のように出力され、処理が終わります。
変数iは「7」です。
while文の無限ループ
while文の条件が、ずっと合う(trueになる)状態だと無限ループになります。
下記のように、意図的に無限ループを作ることができます。
while(true) {
System.out.println("hello.");
}
このプログラムを実行すると、ずっと「hello.
」が出力されてしまいます。
止める時は「Ctrl + c」を入力してください。
このように「true
」になる条件が続くと、無限ループになってしまいます。
基本的には無限ループを使うことは少ないと思います。
条件が「true
」を返し続けないように、気をつけていきましょう。
while文とfor文との違い
while文は条件式を書いてループするだけでしたが、for文の場合は「初期値」と「ステップ値」も記載することができます。
例えば、while文だと下記のように書きます。
int i = 0;
while (i < 3) {
System.out.println("変数iは「" + i + "」です。");
i++;
}
同じ処理をfor文で書くと、下記のようになります。
for (int i = 0; i < 3; i++) {
System.out.println("変数iは「" + i + "」です。");
}
初期値(i = 0
)とステップ値(i++
)を一緒に書くことで、処理が見やすくなりましたよね。
そのため、バグが起こりにくくなると思うので、基本的にはfor文を使う方が安全ではないでしょうか。
for文については、下記に書いているので確認してみてください。
・【Java入門】for文の使い方!繰り返し処理(break,continue)
while文で繰り返し処理をする方法まとめ
今回はJavaでwhile文を使って、繰り返し(ループ)処理をする方法を書きました。
記事の内容をまとめると、下記のようになります。
・while文でbreakを使うことで、処理の途中で抜けることができた。
・while文でcontinueを使うことで、繰り返し処理の先頭に戻って再開できた。
・do while文を使うことで、必ず1回実行される繰り返し処理を書けた。
・while文よりfor文を使った方が、処理が見やすくなった。
コメント