繰り返しとは

繰り返し処理(ループ処理)は、基本三構造の1つで、ある処理を何度も繰り返し実行することをいいます。

  • 1 から 10 までの数字を順に表示する
  • 価格 x 個数の合計を何度も計算する

繰り返し処理のフロー

繰り返し処理をフローにすると以下のようになります。

for文

for文の条件

繰り返しの基本となるのがfor文です。forのあとに ( )をつけてその中に条件を記述します。

for (条件を設定)

つぎに 「{ }」を記述し、その中に繰り返し処理を記述します。

for (条件を設定) {
    処理;
}

for の繰り返し条件設定

繰り返しの条件の設定は、 ;(セミコロン) で区切り、初期値(いくつから)、終了条件(いくつまで)、増減(どれくらい)を指定します。

for (int 初期値; 終了条件; 増減) {
    処理;
}

0から10まで順に表示

0 から 10までの数字を順番に表示します。変数 i が 0 から 10 まで1ずつ増加して繰り返します。i++ は1増加する単項演算です。

for文を使う

ファイル構成

「ItemRepeat.java」を作成しましょう。

lesson1
└── src/
    └── sample/
        └── ItemRepeat.java

for文で繰り返し

変数 i を使って for文で数字を順番に表示してみましょう。

for (int i = 0; i <= 10; i++) {
    System.out.println(i);
}
結果
0
1
2
3
4
5
6
7
8
9
10

for文の自動入力補完

for文の入力が面倒なときは、自動入力補完してみましょう。まず、forを入力します。

for

「Ctrl + スペース」で候補が表示されるので、「for - 配列にインデックスを使用」を選択します。

for文が自動入力できました。

for (int i = 0; i < args.length; i++) {

}

for 文のネスト

for文の中に、さらにfor文を記述することをネストといいます。例えば 10行10列の座標を表示すると以下のようになります。

for (int x = 1; x <= 10; x++) {
	for (int y = 1; y <= 10; y++) {
		String plot = "(" + x + "," + y + ")";
		System.out.print(plot);
	}
	System.out.println();
}
結果
(1, 1) (1, 2) (1, 3) (1, 4) (1, 5) (1, 6) (1, 7) (1, 8) (1, 9) (1, 10) 
(2, 1) (2, 2) (2, 3) (2, 4) (2, 5) (2, 6) (2, 7) (2, 8) (2, 9) (2, 10) 
(3, 1) (3, 2) (3, 3) (3, 4) (3, 5) (3, 6) (3, 7) (3, 8) (3, 9) (3, 10) 
(4, 1) (4, 2) (4, 3) (4, 4) (4, 5) (4, 6) (4, 7) (4, 8) (4, 9) (4, 10) 
(5, 1) (5, 2) (5, 3) (5, 4) (5, 5) (5, 6) (5, 7) (5, 8) (5, 9) (5, 10) 
(6, 1) (6, 2) (6, 3) (6, 4) (6, 5) (6, 6) (6, 7) (6, 8) (6, 9) (6, 10) 
(7, 1) (7, 2) (7, 3) (7, 4) (7, 5) (7, 6) (7, 7) (7, 8) (7, 9) (7, 10) 
(8, 1) (8, 2) (8, 3) (8, 4) (8, 5) (8, 6) (8, 7) (8, 8) (8, 9) (8, 10) 
(9, 1) (9, 2) (9, 3) (9, 4) (9, 5) (9, 6) (9, 7) (9, 8) (9, 9) (9, 10) 
(10, 1) (10, 2) (10, 3) (10, 4) (10, 5) (10, 6) (10, 7) (10, 8) (10, 9) (10, 10) 

配列の繰り返し

for文を使うと、配列の値を繰り返し処理することができます。

配列の長さ

配列のlengthで、配列の要素の個数を取得します。

Array.length

配列の値を表示

配列「drinks」を作成し、for文で繰り返し表示してみましょう。それぞれの値は「drinks」からiを配列のインデックスとして取得します。

String[] drinks = { "コーヒー", "紅茶", "ほうじ茶" };
for (int i = 0; i < drinks.length; i++) {
    //i をインデックスとして取得
    String drink = drinks[i];
	System.out.println(drink);
}
結果
コーヒー
紅茶
ほうじ茶

演習

問題1

1 から 3000 までの整数をすべて足した合計はいくつですか?

1)500500

2)445650

3)4501500

4)5501500

問題2

9 x 9 のかけ算の答えを、段ごとに表示してみましょう。

表示結果の例
1 2 3 4 5 6 7 8 9 
2 4 6 8 10 12 14 16 18 
3 6 9 12 15 18 21 24 27 
4 8 12 16 20 24 28 32 36 
5 10 15 20 25 30 35 40 45 
6 12 18 24 30 36 42 48 54 
7 14 21 28 35 42 49 56 63 
8 16 24 32 40 48 56 64 72 
9 18 27 36 45 54 63 72 81 

問題3(高難易度)

以下のように 5 x 5 の表に「○」「●」をランダムに表示してみましょう。

|○|●|○|●|○|
|●|○|●|○|●|
|○|●|○|●|○|
|●|○|●|○|●|
|○|●|○|●|○|