while文

while文の構造

while文は条件式がtrueの間、ずっと繰り返します。条件式は処理をする前に判定するので前判定といいます。

while (条件式) {
    処理;
}

0から10の間繰り返し

変数 i が「0」から「10」の間はずっと繰り返します。

sample/ItemRepeat.java
int i = 0;
while (i <= 10) {
     i++;
}
System.out.println(i);
結果

最終結果は「11」になります。

11

無限ループ

while文の繰り返しは処理を間違えると、半永久的に処理がされる無限ループになります。

無限ループの場合処理を止める

while文の中で何も処理しなかいと、ずっとループしてしまいます。

sample/ItemRepeat.java
while (i <= 10) {
    System.out.println(i);
}

break でループを抜ける

whileで条件分岐してbreakでループ処理を終了することができます。

while (条件1) {
  if (条件2) {
    break;
  }
}

breakの例

1から1000までの整数で、7の倍数を5つ表示(小さい順)してみましょう。

sample/ItemRepeat.java
int currentNumber = 1;
int maxNumber = 1000;
int div = 7;
int index = 0;
int limit = 5;
while (currentNumber < maxNumber) {
	if (currentNumber % div == 0) {
		System.out.println(currentNumber);
		index++;
	}
	if (index == limit) {
		break;
	}
	currentNumber++;
}

7の倍数が5つ表示されました。index = 5 で whileループがbreakするので、35より大きい数字は処理されていません。

結果
7
14
21
28
35

do while文

後判定

do while文はwhile文と基本的に同じですが、処理をした後に条件を判定します。これを後判定といいます。

0 から 10 以下の間繰り返し

0 から 1 ずつ増えて 10以下の間繰り返す処理です。

sample/ItemRepeat.java
i = 0;
do {
    i++;
} while (i <= 10);
System.out.println("whileの結果:" + i);
結果
whileの結果:11

演習

問題1

コンソールから数値を繰り返し入力して、合計値を表示するプログラムを作成します。【A】【B】【C】にあてはまるのはどれですか?

package sample;

import java.util.Scanner;

public class WhileBreakExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int sum = 0;
        while (true) {
            System.out.print("数値を入力してください(0を入力すると終了します):");
            int number = scanner.nextInt();
            if (number == 0) {
                【A】;
            }
            【B】 += 【C】;
        }
        System.out.println("入力された数値の合計は " + sum + " です。");
        scanner.close();
    }
}
  1. 【A】sum 【B】break【C】number
  2. 【A】break 【B】sum【C】number
  3. 【A】break【B】number【C】sum
  4. 【A】break 【B】sum【C】number

問題2

1年複利で預金して、何年で目標額に達するか計算するプログラムを作成してみましょう。プログラム実行時に、Scannerクラスの標準入力で以下の項目を入力します。

項目 変数 データ型
預金額(円) money float
目標額(円) target float
金利(%) interestRate float