ウェブ

【第1部:第3章】JAVAの条件分岐と繰り返しについて(解説)

JAVAの条件分岐と繰り返し

Javaのプログラムの流れ:代表的な制御構造

Javaプログラムは、基本的に上から下へ順番に処理を実行します。 しかし実際の開発では「条件によって処理を分ける」「同じ処理を繰り返す」といった制御が必要になります。 これを 制御構造 と呼びます。

制御構造説明
順次処理プログラムは上から下へ、順番に処理を実行する
System.out.println("おはよう");
System.out.println("こんにちは");
System.out.println("こんばんは");
          
条件分岐(if文)条件によって処理を分ける
int age = 20;
if (age >= 18) {
    System.out.println("成人です");
} else {
    System.out.println("未成年です");
}
          
繰り返し(for文)同じ処理を指定回数繰り返す
for (int i = 0; i < 5; i++) {
    System.out.println("カウント:" + i);
}
          
繰り返し(while文)条件が true の間、処理を繰り返す
int num = 0;
while (num < 3) {
    System.out.println("num = " + num);
    num++;
}
          
✅ まとめ: ・順次処理 → 上から順番に実行 ・条件分岐 → 状況に応じて処理を分ける ・繰り返し → 処理を繰り返す これらを組み合わせることで、複雑なプログラムを作成できます。

if文を使った条件分岐

public class Main {
    public static void main(String[] args) {
			boolean weather = true;
			if (weather == true) {
				System.out.println("ドライブに出かけます");
			} else {
				System.out.println("アニメを見ます");
			}
    }
}
ドライブに出かけます
ドライブに出かけます
public class Main {
    public static void main(String[] args) {
			boolean weather = false;
			if (weather == true) {
				System.out.println("ドライブに出かけます");
			} else {
				System.out.println("アニメを見ます");
			}
    }
}
アニメを見ます
アニメを見ます

条件分岐(if文)の基本

Javaでは if文 を使って、条件が true の場合と false の場合で処理を分けることができます。 今回の例では、天気(weather) が良いかどうかで行動を決めています。

コード例条件出力結果
boolean weather = true;
if (weather == true) {
    System.out.println("ドライブに出かけます");
} else {
    System.out.println("アニメを見ます");
}
          
weather == true → 条件が真(true)ドライブに出かけます
boolean weather = false;
if (weather == true) {
    System.out.println("ドライブに出かけます");
} else {
    System.out.println("アニメを見ます");
}
          
weather == true → 条件が偽(false)アニメを見ます
✅ ポイント: ・if (条件) { … } → 条件が true のとき実行される ・else { … } → 条件が false のとき実行される ・今回の例では、weather が天気を表す変数になっている

無限ループ

while (繰り返しを続ける条件){
	繰り返し実行する処理
}
public class Main {
	public static void main(String[] args) {
		boolean doorclose = true; 
		while (doorclose == true) {
			System.out.println("ノックする");
			System.out.println("1分待つ");
		}
	}
}
無限ループ
無限ループ

while文を使った繰り返し処理

Javaでは while文 を使って、条件が true の間、同じ処理を繰り返し実行することができます。 今回の例では、ドアが閉じている(doorclose == true)間、ノックして待ち続ける動作を表しています。

コード部分説明
boolean doorclose = true;ドアが閉じている状態を true で表す
while (doorclose == true) { ... }条件が true の間、波かっこの中の処理を繰り返す
System.out.println("ノックする");
System.out.println("1分待つ");
          
「ノックする」「1分待つ」を繰り返し出力する
✅ 出力結果:
ノックする
1分待つ
ノックする
1分待つ
…(無限に繰り返す)
⚠ 注意:
このコードでは doorclose の値がずっと true のままなので、無限ループになります。
実際に使う場合は、doorclosefalse に変更する処理を入れる必要があります。

if-else文条件分岐

if (分岐条件){
	条件成立のときに実行する処理
	} else {
	条件不成立のときに実行する処理
}
public class Main {
	public static void main(String[] args) {
		boolean doorclose = false; 
		if (doorclose == true) {
			System.out.println("ノックする");
			System.out.println("1分待つ");
		} else {
			System.out.println("ドアが開いています");
			System.out.println("中に入る");
		}
	}
}
if-else文条件分岐
if-else文条件分岐

if-else文による条件分岐

Javaでは if-else文 を使って、条件が true のときと false のときで異なる処理を実行できます。 今回の例では、ドアが閉じているかどうかを boolean doorclose で表し、その状態によって処理を分けています。

コード部分説明
boolean doorclose = false;ドアが閉じていない状態を false で表す
if (doorclose == true) {
    System.out.println("ノックする");
    System.out.println("1分待つ");
}
          
ドアが閉じている場合(true)の処理。
ノックして、1分待つ。
else {
    System.out.println("ドアが開いています");
    System.out.println("中に入る");
}
          
ドアが開いている場合(false)の処理。
「ドアが開いています」と表示し、中に入る。
✅ 今回の実行結果(doorclose = false の場合):
ドアが開いています
中に入る
⚡ ポイント: ・if → 条件が true のときの処理 ・else → 条件が false のときの処理 ・boolean 型を使うと、プログラムの分岐をシンプルに表現できる

関係演算子(比較演算子)

関係演算子の種類と意味

Javaの 関係演算子 は、2つの値を比較し、結果として true または false を返します。 条件分岐(if文while文 など)でよく使われます。

演算子意味使用例結果
==左辺と右辺が等しい5 == 5true
!=左辺と右辺が等しくない5 != 3true
>左辺が右辺より大きい7 > 3true
<左辺が右辺より小さい2 < 8true
>=左辺が右辺以上5 >= 5true
<=左辺が右辺以下3 <= 7true
✅ 関係演算子は、条件式に使われ
例:
if (score >= 60) { System.out.println("合格"); }

論理演算子の種類と意味

Javaの 論理演算子 は、複数の条件式を組み合わせたり、結果を反転させたりするために使います。 関係演算子と一緒に使われることが多く、条件分岐や繰り返し処理で活用されます。

演算子意味使用例結果
&&論理積(AND)
両方の条件が true のときのみ true
(5 > 3) && (8 > 6)true
||論理和(OR)
どちらかの条件が true なら true
(5 > 10) || (8 > 6)true
!論理否定(NOT)
truefalse に、falsetrue にする
!(5 > 3)false
✅ 例:
if ((score >= 60) && (absent == false)) {
 System.out.println("合格");
}

→ 「スコアが60以上」かつ「欠席していない」場合のみ「合格」と表示されます。

if-else 構文(基本形)

if-else は「条件が true のときはA、false のときはB」を書くための最も基本的な分岐構文です。

書式(テンプレート)

if (条件式) {
    // 条件が true のときに実行
} else {
    // 条件が false のときに実行
}
  

ポイント

  • 条件式true/false を返す式(例:x >= 0a == b)。
  • どちらか一方のブロック(ifelse)だけが実行されます。
  • else は任意。不要なら if だけでもOK。

例:年齢でメッセージを切り替える

int age = 18;

if (age >= 20) {
    System.out.println("成人です");
} else {
    System.out.println("未成年です");
}
  
状況評価結果実行されるブロック出力
age = 22age >= 20trueif ブロック成人です
age = 18age >= 20falseelse ブロック未成年です

ワンポイント(書き方のコツ)

  • ブール変数を直接判定:if (isRaining)if (isRaining == true) と同じ)
  • 否定は ! を使う:if (!isRaining)

ifのみの構文(条件が真なら処理を行う)

ifのみ は「条件が true のときだけ処理を実行し、条件が false のときは何もしない」場合に使います。 else 部分が不要なときにシンプルに書けます。

書き方(テンプレート)

if (条件式) {
    // 条件が true のときに実行される処理
}
  

例:点数が合格ライン以上なら合格メッセージを表示する

int score = 75;

if (score >= 60) {
    System.out.println("合格です");
}

// score が 59 のときは何も出力されない
  

例:フラグを使うパターン(実行する/しない)

boolean isPremiumUser = true;

if (isPremiumUser) {
    System.out.println("プレミアムユーザー向けの機能を有効化します");
}
  

ポイント

  • 条件式は true/false を返す式(例:比較演算子や論理演算子)。
  • else が無いので、条件が偽(false)のときは何も実行されません。
  • 波かっこ({ })は、実行する文が1行だけでも書くことを推奨します(可読性・バグ防止のため)。
✅ まとめ:
ifのみは「条件が成り立つときだけ処理を行う」ために使う基本形。分岐の片側だけ必要な場面でシンプルに書けます。

if - else if - else 構文(複数条件の分岐)

if - else if - else は複数の条件を順に判定して、最初に成り立った条件の処理を実行します。 左から順に条件を評価し、どれにも当てはまらない場合は else の処理が実行されます。

書式(テンプレート)

if (条件1) {
    // 条件1 が true のとき実行
} else if (条件2) {
    // 条件1 が false かつ 条件2 が true のとき実行
} else {
    // どの条件にも当てはまらないとき実行
}
  

例:年齢に応じて区分を表示する

int age = 18;

if (age >= 65) {
    System.out.println("シニア割引対象です");
} else if (age >= 20) {
    System.out.println("成人料金です");
} else if (age >= 13) {
    System.out.println("中高生料金です");
} else {
    System.out.println("子ども料金です");
}
  
age の値判定の流れ(最初に true になった条件)出力
age = 70age >= 65 が true(最初に一致)シニア割引対象です
age = 30age >= 65 false → age >= 20 true成人料金です
age = 15前2つ false → age >= 13 true中高生料金です
age = 8すべての条件が false子ども料金です

ポイント

  • 条件は上から順に評価され、最初に true になった分岐だけが実行されます。
  • else if は何個でも使えますが、条件の順序に注意(上位条件を先に)。
  • else は省略可能ですが、どの条件にも当てはまらないケースを扱うなら用意しておくと安全。
  • 複雑な条件は論理演算子(&&, ||)でまとめると見やすくなることがあります。
✅ まとめ:
if - else if - else 構文は「複数の選択肢」を順に評価してひとつを選ぶときに使います。条件の並び順と漏れ(どれにも当てはまらない場合)を意識して書きましょう。

おみくじプログラム

public class Main {
	public static void main(String[] args){
		int fortune = new java.util.Random().nextInt(4) +1;
		if (fortune == 1) {
			System.out.println("大吉");
		} else if (fortune == 2) {
			System.out.println("中吉");
		} else if (fortune == 3){
			System.out.println("吉");
		} else {
			System.out.println("凶");
		}
	}
}
おみくじプログラム
おみくじプログラム

乱数と if - else if - else 構文を使ったおみくじプログラム

このプログラムでは、乱数を使って 1〜4 の数値を作り、その結果によって「大吉」「中吉」「吉」「凶」を表示します。 if - else if - else 構文を利用して条件分岐をしています。

int fortune = new java.util.Random().nextInt(4) + 1;
if (fortune == 1) {
    System.out.println("大吉");
} else if (fortune == 2) {
    System.out.println("中吉");
} else if (fortune == 3) {
    System.out.println("吉");
} else {
    System.out.println("凶");
}
  

コードの解説

  • new java.util.Random().nextInt(4) → 0〜3 の乱数を生成します。
  • + 1 を加えることで 1〜4 の範囲に変換しています。
  • if (fortune == 1) → 乱数が 1 の場合は「大吉」を出力。
  • else if (fortune == 2) → 乱数が 2 の場合は「中吉」を出力。
  • else if (fortune == 3) → 乱数が 3 の場合は「吉」を出力。
  • else → 上記以外(つまり 4 の場合)は「凶」を出力。
fortune の値出力される結果
1大吉
2中吉
3
4
✅ まとめ:
乱数を使うことで実行ごとに異なる結果を出す「おみくじプログラム」を作成できます。 条件分岐で出力する内容を分けるのがポイントです。

構文と乱数

public class Main {
	public static void main(String[] args){
		System.out.println("あなたの今日の状態");
		int situation = new java.util.Random().nextInt(5) +1;
		switch (situation) {
			case 1,2 -> {
				System.out.println("好調です。");
			}
			case 3 -> {
				System.out.println("普通です。");
			}
			case 4,5 -> {
				System.out.println("不調です。");
			}
		}
	}
}
構文と乱数
構文と乱数

switch 構文と乱数を使った判定処理

このコードは、乱数で 1〜5 の数値を生成し、その結果に応じて「好調」「普通」「不調」を表示するプログラムです。 switch 構文を利用して条件分岐を簡潔に記述しています。

System.out.println("あなたの今日の状態");
int situation = new java.util.Random().nextInt(5) + 1;

switch (situation) {
    case 1, 2 -> {
        System.out.println("好調です。");
    }
    case 3 -> {
        System.out.println("普通です。");
    }
    case 4, 5 -> {
        System.out.println("不調です。");
    }
}
  

コードの解説

  • new java.util.Random().nextInt(5) → 0〜4 の乱数を生成。
  • + 1 を加えることで 1〜5 の範囲に変換。
  • switch (situation) → 変数 situation の値に応じて分岐処理を実行。
  • case 1, 2 → 値が 1 または 2 のとき「好調です。」と表示。
  • case 3 → 値が 3 のとき「普通です。」と表示。
  • case 4, 5 → 値が 4 または 5 のとき「不調です。」と表示。
  • -> は Java 14 以降の switch 式の簡潔な書き方で、従来の break; が不要。
situation の値出力結果
1 または 2好調です。
3普通です。
4 または 5不調です。
✅ まとめ:
switch 構文を使うと、複数の条件を見やすく整理できます。 Java 14 以降の case n, m -> 記法を使えば、従来よりも簡潔で安全に書けます。
public class Main {
	public static void main(String[] args) {
		System.out.println("あなたの今日の状態");
		int situation = new java.util.Random().nextInt(5) + 1;
		switch (situation) {
		case 1, 2:
			System.out.println("好調です。");
			break;
		case 3:
			System.out.println("普通です。");
			break;
		case 4, 5:
			System.out.println("不調です。");
		}
	}
}
従来のswitch文
従来のswitch文

従来の switch 文を使った分岐処理

このコードは、乱数で 1〜5 の数値を生成し、その値によって「好調」「普通」「不調」を表示します。 先ほどの case n, m -> { } 記法ではなく、従来の switch 文を使った書き方です。

System.out.println("あなたの今日の状態");
int situation = new java.util.Random().nextInt(5) + 1;

switch (situation) {
case 1, 2:
    System.out.println("好調です。");
    break;
case 3:
    System.out.println("普通です。");
    break;
case 4, 5:
    System.out.println("不調です。");
}
  

コードの解説

  • new java.util.Random().nextInt(5) + 1 → 1〜5 の乱数を生成します。
  • switch (situation) → 乱数の値に応じて case ごとの処理を実行。
  • case 1, 2: → 値が 1 または 2 の場合は「好調です。」を表示。
  • case 3: → 値が 3 の場合は「普通です。」を表示。
  • case 4, 5: → 値が 4 または 5 の場合は「不調です。」を表示。
  • break; → 該当する処理を実行したら switch 文を終了するために必要。 書かないと後続の case も実行されてしまう(フォールスルー)。
situation の値出力結果
1 または 2好調です。
3普通です。
4 または 5不調です。
✅ まとめ:
従来の switch 文では break; が必須。 書き忘れると意図しない処理まで実行されるので注意しましょう。

繰り返し処理(ループ)

public class Main {
	public static void main(String[] args) {
		for (int i = 0; i < 10; i++) {
			System.out.println("10回繰り返す");
		}
	}
}
繰り返し処理(ループ)
繰り返し処理(ループ)

for 文を使った繰り返し処理(ループ)

このコードは for 文 を使って、同じ処理を 10回繰り返すプログラムです。 コンソールに「10回繰り返す」というメッセージが 10 回表示されます。

for (int i = 0; i < 10; i++) {
    System.out.println("10回繰り返す");
}
  

コードの解説

  • int i = 0; → ループ用の変数 i を 0 からスタート。
  • i < 10; → 繰り返し条件。i が 10 未満の間、処理を繰り返す。
  • i++; → ループのたびに i を 1 ずつ増やす(インクリメント)。
  • System.out.println("10回繰り返す"); → 繰り返しの本体。条件が成り立つ限り毎回実行される。
繰り返し回数変数 i の値出力内容
1回目010回繰り返す
2回目110回繰り返す
10回目910回繰り返す
✅ まとめ:
for 文は「初期化」「条件式」「更新処理」をまとめて書ける便利な繰り返し構文。 繰り返し回数があらかじめ決まっている場合に最適です。

カウンタ付きループ

public class Main {
	public static void main(String[] args) {
		for (int i = 0; i < 3; i++) {
			System.out.println((i + 1) + "周目→");
		}
	}
}
カウンタ付きループ
カウンタ付きループ

for 文を使ったカウンタ付きループ

このコードは for 文 を用いて、3回繰り返しを行い、 その都度「◯周目→」と出力するプログラムです。

for (int i = 0; i < 3; i++) {
    System.out.println((i + 1) + "周目→");
}
  

コードの解説

  • int i = 0; → ループ用のカウンタ変数を 0 から開始。
  • i < 3; → i が 3 未満の間、繰り返しを実行。
  • i++; → 繰り返すごとに i を 1 増加。
  • (i + 1) → i は 0 から始まるので、+1 して「1周目、2周目、3周目」と出力。
繰り返し回数変数 i の値出力内容
1回目01周目→
2回目12周目→
3回目23周目→
✅ まとめ:
for 文は繰り返し回数が決まっている処理に便利。
ここでは「3回だけ実行」という明確な条件を指定しています。

for 文の様々なバリエーション

Java の for 文 には、繰り返し方にいくつかのバリエーションがあります。 ここでは代表的な書き方をまとめて紹介します。

① 基本形

for (int i = 0; i < 5; i++) {
    System.out.println(i);
}
  

→ 0~4 までを順番に出力します。

② 減少ループ

for (int i = 5; i > 0; i--) {
    System.out.println(i);
}
  

→ 5 から 1 までを逆順に出力します。

③ 増加ステップを変更

for (int i = 0; i <= 10; i += 2) {
    System.out.println(i);
}
  

→ 0, 2, 4, 6, 8, 10 を出力します。

④ 無限ループ(条件を省略)

for (;;) {
    System.out.println("繰り返し");
}
  

→ 条件を省略すると無限ループになります。
break; で抜ける処理を入れる必要があります。

⑤ 配列やコレクションを使った拡張 for 文

String[] names = {"山田", "田中", "佐藤"};
for (String n : names) {
    System.out.println(n + "さん");
}
  

→ 配列の要素を 1 つずつ取り出して処理します。

✅ まとめ:
for 文は「カウンタ付きの繰り返し」だけでなく、
配列処理ステップ調整など柔軟に使える構文です。

九九繰り返し処理

public class Main {
	public static void main(String[] args) {
		for (int i = 1; i < 20; i++) {
			for (int j = 1; j < 20; j++) {
				System.out.print(i * j);
				System.out.print(" ");
			}
			System.out.println(" ");
		}
	}
}
九九繰り返し処理
九九繰り返し処理

入れ子の for 文(九九のような繰り返し処理)

このコードは 2重の for 文 を使って、掛け算の結果を繰り返し出力しています。 いわゆる「九九表」や「掛け算表」を作る処理に似ています。

for (int i = 1; i < 20; i++) {
    for (int j = 1; j < 20; j++) {
        System.out.print(i * j);
        System.out.print(" ");
    }
    System.out.println(" ");
}
  

コードの解説

  • for (int i = 1; i < 20; i++) → 外側のループ。行を担当し、1 から 19 までの数を繰り返す。
  • for (int j = 1; j < 20; j++) → 内側のループ。列を担当し、1 から 19 までの数を繰り返す。
  • System.out.print(i * j); → i と j を掛け算した結果を表示。改行せず横に並ぶ。
  • System.out.print(" "); → 計算結果の後にスペースを入れて見やすくする。
  • System.out.println(" "); → 内側のループが終わったら改行し、次の行へ進む。

出力イメージ(例:一部)

1 2 3 4 5 ...
2 4 6 8 10 ...
3 6 9 12 15 ...
...
  
✅ まとめ:
入れ子の for 文 を使うと、表形式のデータや多次元の繰り返し処理を簡単に実装できます。 掛け算表、座標処理、ゲームの盤面処理などに活用されます。

コメントを残す

メールアドレスが公開されることはありません。