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のままなので、無限ループになります。
実際に使う場合は、doorcloseをfalseに変更する処理を入れる必要があります。
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文による条件分岐
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 == 5 | true |
| != | 左辺と右辺が等しくない | 5 != 3 | true |
| > | 左辺が右辺より大きい | 7 > 3 | true |
| < | 左辺が右辺より小さい | 2 < 8 | true |
| >= | 左辺が右辺以上 | 5 >= 5 | true |
| <= | 左辺が右辺以下 | 3 <= 7 | true |
✅ 関係演算子は、条件式に使われ
例:
if (score >= 60) { System.out.println("合格"); }
論理演算子の種類と意味
Javaの 論理演算子 は、複数の条件式を組み合わせたり、結果を反転させたりするために使います。 関係演算子と一緒に使われることが多く、条件分岐や繰り返し処理で活用されます。
| 演算子 | 意味 | 使用例 | 結果 |
|---|---|---|---|
| && | 論理積(AND) 両方の条件が true のときのみ true | (5 > 3) && (8 > 6) | true |
| || | 論理和(OR) どちらかの条件が true なら true | (5 > 10) || (8 > 6) | true |
| ! | 論理否定(NOT)true を false に、false を true にする | !(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 >= 0、a == b)。 - どちらか一方のブロック(
ifかelse)だけが実行されます。 elseは任意。不要ならifだけでもOK。
例:年齢でメッセージを切り替える
int age = 18;
if (age >= 20) {
System.out.println("成人です");
} else {
System.out.println("未成年です");
}
| 状況 | 評価結果 | 実行されるブロック | 出力 |
|---|---|---|---|
age = 22 | age >= 20 → true | if ブロック | 成人です |
age = 18 | age >= 20 → false | else ブロック | 未成年です |
ワンポイント(書き方のコツ)
- ブール変数を直接判定:
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 = 70 | age >= 65 が true(最初に一致) | シニア割引対象です |
age = 30 | age >= 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 文を使った分岐処理
このコードは、乱数で 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回目 | 0 | 10回繰り返す |
| 2回目 | 1 | 10回繰り返す |
| … | … | … |
| 10回目 | 9 | 10回繰り返す |
✅ まとめ:
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回目 | 0 | 1周目→ |
| 2回目 | 1 | 2周目→ |
| 3回目 | 2 | 3周目→ |
✅ まとめ:
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 文 を使うと、表形式のデータや多次元の繰り返し処理を簡単に実装できます。 掛け算表、座標処理、ゲームの盤面処理などに活用されます。



![【原神】刻晴超開花パーティ 夜蘭蒸発パーティ 深境螺旋12層攻略 Genshin Impact [4K] (げんしん)](https://design-pull.com/wp-content/uploads/2022/12/gensinabyssal_spiral12_20221126-320x180.jpg)




