こんにちは。大化社員のeriです。 初心者向けにJavaの条件分岐と繰り返し処理について、どれを使えばいいか迷ったときに選びやすいようにシンプルにまとめました。
条件分岐
if文
- if文は条件は複数の条件をチェックし、真の条件に該当する場合に対応するコードを実行できます。
- 複雑な条件式(論理演算子など)を含めることができます。
if (条件) { // 条件が真の場合に実行されるコード } else if (別の条件) { // 別の条件が真の場合に実行されるコード } else { // いずれの条件も偽の場合に実行されるコード }
if文の使用例
成績(scoreの値)に応じて異なるメッセージを表示します。
int score = 85; if (score >= 90) { System.out.println("成績は優秀です。"); } else if (score >= 70) { System.out.println("成績は良いです。"); } else if (score >= 50) { System.out.println("成績は合格です。"); } else { System.out.println("成績は不合格です。"); }
結果
成績は良いです。
switch文
- switch文は値に基づく一致を必要とし、式の値が特定の条件(case)と一致する場合、その条件に対応するコードを実行します。
- switch文の条件は整数型や文字型の定数式である必要があります。
- switch文にbreakが無い場合、該当するcaseが実行された後、次のcaseも実行されます。これは意図しない結果を生むことがあるため、多くの場合は特定のcaseが実行されたあとに他のcaseが実行されないようにbreakを記載します。
switch (式) { case 値1: // 値1に一致する場合に実行されるコード break; case 値2: // 値2に一致する場合に実行されるコード break; default: // いずれのcaseにも一致しない場合に実行されるコード }
switch文の使用例
数字で表された曜日(day)に対応する曜日名(dayName)を表示します。
int day = 3; String dayName; switch (day) { case 1: dayName = "月曜日"; break; case 2: dayName = "火曜日"; break; case 3: dayName = "水曜日"; break; // 他の曜日に対するcase文を追加 default: dayName = "不明な曜日"; } System.out.println("今日は" + dayName + "です。");
結果
今日は水曜日です。
繰り返し処理
for文
- for 文は反復回数が既知である場合や特定の回数だけ繰り返しをする場合に使用されます。
- カウンタ変数の値が特定の条件を満たさなくなった場合にループが終了します。
for (初期化式; 条件式; 変化式) { // 実行したいコードを記述 }
for文の使用例
1から10までの整数を合計します。 i変数が1から10まで順番に増加し、それをsum変数に加算していきます。
int sum = 0; for (int i = 1; i <= 10; i++) { sum += i; } System.out.println("合計: " + sum);
結果
合計: 55
拡張for文(for-each文)
- 拡張 for 文は条件式がありません。対象となる配列やコレクションの要素の数だけ繰り返しを行います。
- ListやMapなどの配列を処理するのに便利です。
for (データ型 変数名 : コレクションまたは配列) { // 要素に対する処理 }
拡張for文の使用例
リスト内の整数を反復処理し、それらの合計を計算します。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); int sum = 0; for (int number : numbers) { sum += number; } System.out.println("合計: " + sum);
結果
合計: 15
while文
- while文は特定の条件が満たされている限り繰り返しを続けるため、反復回数が不明な場合に使用されます。
- for 文とは異なり初期化式や変化式はありません。初期化式は while 文の前で宣言などを行い、条件式が変化するような処理はブロックの中で行います。
int i = 0; while (条件式) { // 実行したいコードを記述 }
while文の使用例
整数を1から順番に2乗し、2乗した数が10を超えるとループを終了します。
int i = 1; while (true) { int square = i * i; if (square > 10) { break; // 2乗した数が10を超えたらループを終了 } System.out.println(i + " の2乗は " + square); i++; }
結果
1 の2乗は 1 2 の2乗は 4 3 の2乗は 9
do..while文
- while 文とほぼ同じですが、条件式の評価が繰り返しの最後で行われるため、少なくとも一回は繰り返し処理が行われます。
- ループの終了条件がループ内で計算される場合に使用されます。
do{ // 実行したいコードを記述 ... }while (条件式);
do..while文の使用例
1から10までの偶数を表示します。
int number = 1; do { if (number % 2 == 0) { System.out.println(number); } number++; } while (number <= 10);
結果
2 4 6 8 10
繰り返し処理のbreak
- breakは繰り返し処理内で特定の条件が満たされた場合、ループを終了するために使用されます。
for文でのbreakの使用例
i が5になると break が実行され、ループが終了します。
for (int i = 1; i <= 10; i++) { if (i == 5) { break; // ループを終了 } System.out.println(i); }
繰り返し処理のcontinue
- continueはループ内での特定の条件に従って、現在の繰り返し処理をスキップし、次の繰り返し処理を開始するために使用されます。
for文でのcontinueの使用例
i が3のとき、continue が実行され、その繰り返し処理のコードがスキップされ、次の繰り返し処理が開始されます。そのため3は出力されません。
for (int i = 1; i <= 5; i++) { if (i == 3) { continue; // iが3の場合、この繰り返し処理をスキップ } System.out.println(i); }
以上になります。Javaの条件分岐と繰り返し処理で迷った時の参考になれば幸いです。