Javaの繰り返し処理を完全解説!初心者でもわかるwhile, for, 拡張forの使い方
生徒
「Javaで同じ処理を何度も繰り返す方法ってありますか?」
先生
「良い質問ですね!Javaには、同じ操作を何度も実行するための繰り返し処理があります。while文やfor文、拡張for文を使えば簡単に実現できますよ。」
生徒
「それぞれどんな違いがあるんですか?」
先生
「それでは、基本的な使い方から一つずつ説明していきましょう!」
1. while文とは?
while文は、指定した条件が「真(true)」の間、繰り返し処理を実行するための構文です。繰り返し処理が必要な場面で非常に役立ちます。例えば、ユーザーが入力するまで待機する処理や、特定の条件が満たされるまで繰り返す処理を記述するのに使われます。
public class WhileExample {
public static void main(String[] args) {
int count = 0;
while (count < 5) {
System.out.println("カウント: " + count);
count++;
}
}
}
このコードでは、countが5より小さい間、while文の中の処理が繰り返し実行されます。countが増加していくことで、条件が満たされなくなった時点でループが終了します。
2. for文の基本的な使い方
for文は、繰り返し処理の回数が決まっている場合に便利です。開始条件、終了条件、増減を1行で指定できるため、コードがシンプルになります。ループ回数がはっきりしているときにはfor文を使うことが一般的です。
public class ForExample {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println("ループ回数: " + i);
}
}
}
上記のコードでは、iが0から始まり、5未満の間ループが実行されます。各繰り返しのたびにiが1ずつ増加します。これによって、ループを簡潔に記述できます。
3. 拡張for文(foreach文)で配列やリストをループ
Javaには、配列やコレクションを簡単に繰り返し処理するための拡張for(foreach)文もあります。通常のfor文よりもシンプルに書けるため、配列やArrayListの要素を順番に処理する際に便利です。
public class EnhancedForExample {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
System.out.println("数字: " + number);
}
}
}
この例では、numbers配列の各要素が順番にnumberに代入され、for文内で処理されます。拡張for文を使うことで、インデックス操作を意識する必要がなく、コードがスッキリと書けます。
4. while文の実践パターン:カウンタ・センチネル・無限ループ+break
whileは「条件が成り立つ間ずっと」動かしたいときに向いています。カウンタで回数制御、センチネル(終了値)で停止、無限ループ+breakで明示終了などの書き方があります。
public class WhilePatterns {
public static void main(String[] args) {
// 4.1 カウンタで5回
int i = 0;
while (i < 5) {
System.out.println("count = " + i);
i++;
}
// 4.2 センチネル(負数が来たら終了)
int[] inputs = {3, 8, 2, -1, 4};
int sum = 0; int idx = 0;
while (idx < inputs.length && inputs[idx] >= 0) {
sum += inputs[idx++];
}
System.out.println("合計 = " + sum);
// 4.3 無限ループ+break(条件を満たしたら抜ける)
int n = 0;
while (true) {
n += 3;
if (n >= 12) break; // ここで終了
}
System.out.println("n = " + n); // 12
}
}
trueだと無限ループになります。増減忘れや条件式に注意しましょう。5. for文のバリエーション:減少・ステップ幅・複数制御・ネスト
forは回数が決まっている繰り返しに最適です。増減や同時制御、入れ子(ネスト)で表のような処理にも使えます。
public class ForVariants {
public static void main(String[] args) {
// 5.1 減少ループ
for (int i = 5; i > 0; i--) {
System.out.print(i + " "); // 5 4 3 2 1
}
System.out.println();
// 5.2 ステップ幅2
for (int i = 0; i <= 10; i += 2) {
System.out.print(i + " "); // 0 2 4 6 8 10
}
System.out.println();
// 5.3 複数変数を同時に制御
for (int i = 0, j = 10; i < j; i++, j--) {
System.out.println("i=" + i + ", j=" + j);
}
// 5.4 ネストで九九の一部
for (int a = 1; a <= 3; a++) {
for (int b = 1; b <= 3; b++) {
System.out.printf("%d×%d=%d ", a, b, a * b);
}
System.out.println();
}
}
}
まとめ
本記事では、Javaの繰り返し処理について初心者向けに解説しました。while文、for文、拡張for文(foreach文)のそれぞれの特徴と使い方を学び、繰り返し処理の基本を理解することができました。特に、while文は条件が満たされる限りループを継続する場面で役立ち、for文は回数が明確な場合に簡潔な記述が可能です。また、拡張for文は配列やリストの処理をよりシンプルに書けるため、コードの可読性を高めます。
繰り返し処理を使いこなすことで、プログラムの効率化や柔軟性が向上します。これらの構文を使って、様々な条件やデータに応じた処理を実現していきましょう。
public class LoopRecap {
public static void main(String[] args) {
int count = 1;
// while文
while (count <= 3) {
System.out.println("カウント: " + count);
count++;
}
// for文
for (int i = 0; i < 3; i++) {
System.out.println("forループ: " + i);
}
// 拡張for文
String[] fruits = {"りんご", "バナナ", "オレンジ"};
for (String fruit : fruits) {
System.out.println("フルーツ: " + fruit);
}
}
}
上記のコードは、while文、for文、拡張for文の違いを比較する例です。それぞれの繰り返し処理がどのように使われるかを復習するのに役立ちます。自分で実行してみて、動作を確認しましょう。
生徒
「先生、while文、for文、拡張for文の使い分けがよく分かりました!」
先生
「そうですね。繰り返し処理は、どの条件で使うかを明確にして選ぶことが大切です。例えば、条件に応じて繰り返したいときはwhile文、回数が決まっている場合はfor文が適しています。」
生徒
「配列やリストを処理するなら拡張for文が一番簡単ですね!」
先生
「その通りです。特に、インデックス操作が不要な場合に便利です。次回は、これらの繰り返し処理を使ってもっと実践的なプログラムを作ってみましょう。」
生徒
「ぜひ挑戦したいです!これから練習して理解を深めたいと思います。」