この記事の目次
1. While文とは
While文とはあるブロックの処理に対して、何回繰り返して実行するか最初から決めれない場合に使う制御構造です。
while(現在 は 8月){ 学校が休み; } 学校に行きます;
説明:
2. while文の使い方
● while文の構造
while(条件式){ ブロック }
● 例題
int型のn数字をキーボードから入力して、「1+2+3+...+ n 」を計算しましょう。
package helloworld; import java.util.Scanner; //Scannerクラスのimport public class HelloWorld { public static void main(String[] args) { int n, sum = 0; int number = 1; Scanner scanner = new Scanner(System.in); System.out.print("3より大きい数字を入力する: "); n = scanner.nextInt(); while (number <= n) { sum += number; // sum = sum + number; number += 1; //number = number + 1; } System.out.println("実行結果:"); System.out.println("1+2+3+...+" + n + " = " + sum); } }
実行結果:
プログラムの実行流れ(n = 5と入力した場合):
1 <= 5
はtrueであるため、ブロック内を実行し、sum に sum + number = 0 + 1 = 1を代入して、numberを2に増やす1 <= 5
はtrueであるため、ブロック内を実行し、sum に sum + number = 1 + 2 = 3を代入し、numberを3に増やします3 <= 5
はtrueであるため、ブロック内を実行し、sum に sum + number = 3 + 3 = 6を代入し、numberを4に増やします4 <= 5
はtrueであるため、ブロック内を実行し、sum に sum + number = 6 + 4 = 15を代入し、numberを5に増やします5<= 5
はtrueであるため、ブロック内を実行し、sum に sum + number = 10 + 5 = 15を代入し、numberを6に増やします6 <= 5
はfalseであるため、ブロック内を実行せず、ループから抜けて、下の命令を実行し、コンソールに出力します3. do-while文の使い方
● do-while文の構造
do{ ブロック }while(条件式);
● 例題
上のwhile文の例題をdo-while文に書き換えます(実行結果n=5の場合は変わりません)
package helloworld; import java.util.Scanner; //Scannerクラスのimport public class HelloWorld { public static void main(String[] args) { int n, sum = 0; int number = 1; Scanner scanner = new Scanner(System.in); System.out.print("3より大きい数字を入力する: "); n = scanner.nextInt(); do { sum += number; // sum = sum + number; number += 1; //number = number + 1; }while (number <= n); System.out.println("実行結果:"); System.out.println("1+2+3+...+" + n + " = " + sum); } }
4. ループを制御する方法
● break文でループを抜ける方法
「break」文を実行すると、ループ内のそれ以降の処理は行わずにループ外の次の処理に移ります。
以下はwhile構文の例題からbreak文使用のように書き換えたプログラムです
例題:
while文の例題をbreak文を導入して書き換えると、以下のようになります(実行結果は変わりません)
package helloworld; import java.util.Scanner; //Scannerクラスのimport public class HelloWorld { public static void main(String[] args) { int n, sum = 0; int number = 1; Scanner scanner = new Scanner(System.in); System.out.print("3より大きい数字を入力する: "); n = scanner.nextInt(); while (true) { if(number > n){ break; } sum += number; // sum = sum + number; number += 1; //number = number + 1; } System.out.println("実行結果:"); System.out.println("1+2+3+...+" + n + " = " + sum); } }
説明:
number > n
という条件が満たされたらbreak文を実行し、ループから抜けます。それで、全体的に見ると、この記事の最初の例題とプログラムのアルゴリズムは全く同じですので、結果も一緒になります。● continue文で処理をスキップする方法
「continue」文を実行すると、ループ内のそれ以降の処理は行わずに,ループの最初の処理から再び実行されます。(1つのループをスキップする)
例題:
記事の最初の例題を改造「1+2+3+5」を計算しましょう。(4を除いた1から5までの和)
package helloworld; public class HelloWorld { public static void main(String[] args) { int n, sum = 0; int number = 1; n = 5; while (number <= n) { if(number == 4){ number += 1; continue; } sum += number; // sum = sum + number; number += 1; //number = number + 1; } System.out.println("実行結果:"); System.out.println("1+2+3+5 = " + sum); } }
実行結果:
● 無限ループ
無限ループとは強制的にされない限り、永遠に繰り返しを続ける制御構造のことです。意図に無限ループを作成する場合は以下の方法があります。
while(true){ ブロック }
5. まとめ
ここまではwhile、do-while文の構造や使い方などは理解しましたでしょうか!if文、while文、break文、continue文をそれぞれ特徴と役割を身につけて、自作のプログラムを作れるように頑張って練習しましょう。
以下のwhile文、do-while文に関する演習問題です。ぜひやってみてください。
6. 演習問題
JAVAの繰り返し構文 whileの演習問題