1. if の基本イメージ
if は「もし〜ならば」を書く道具です。条件が 真(true) のときだけ中の処理を実行します。
if (条件式) {
// 条件が true のときだけ実行される処理
}
Java例:数が偶数か調べる
int num = 4;
if (num % 2 == 0) {
System.out.println("偶数です");
}
// 出力: 偶数です
Java2. if ... else(二択)
条件が真なら処理A、そうでなければ処理B。
if (条件式) {
// true のとき
} else {
// false のとき
}
Java例:偶数/奇数判定
int num = 5;
if (num % 2 == 0) {
System.out.println("偶数");
} else {
System.out.println("奇数");
}
// 出力: 奇数
Java3. if ... else if ... else(複数パターン)
複数の条件を順番にチェックして、最初に当てはまったブロックだけ実行します。
if (条件1) {
// 条件1 が true のときだけ
} else if (条件2) {
// 条件1 が false かつ 条件2 が true のとき
} else {
// どれにも当てはまらないとき
}
Java例:点数 → 判定
int score = 74;
if (score >= 90) {
System.out.println("A");
} else if (score >= 70) {
System.out.println("B");
} else if (score >= 50) {
System.out.println("C");
} else {
System.out.println("D");
}
// 出力: B
Java※ 上から順に評価するので、>= 90 のチェックが先に来るように順序が重要です。
4. 条件式で使う基本(演算子)
- 比較(関係演算子)
==(等しい)、!=(等しくない)、>、<、>=、<=
例:x == 10は「x が 10 と等しいか」を判定します。 - 論理演算子(複数条件の組合せ)
&&(AND:両方 true のとき true)||(OR:どちらかが true のとき true)!(NOT:真偽を反転)
例:
int a = 5, b = 8;
if (a < 10 && b > 5) {
System.out.println("両方の条件を満たす");
}
if (a == 5 || b == 5) {
System.out.println("どちらかが 5");
}
if (!(a > b)) {
System.out.println("a は b より大きくない");
}
Java5. よくある初心者ミス・注意点
- 代入
=と比較==の混同if (x = 5)はエラー(Java は boolean でない代入を if に使えない)。比較は==。 - 中括弧
{}の省略の落とし穴
1 行だけなら{}を省略できますが、後から行を追加するとバグになりやすい。初心者は常に{}を使う習慣を。 - 条件の順番
else ifでは上から順に評価されるので、範囲チェックは大きい方(厳しい方)を先に書く。 &&と||の評価&&は左が false のとき右を評価しない(短絡評価)。副作用のある式に注意。- 浮動小数点の比較
doubleやfloatの厳密な等価比較は避け、誤差(イプシロン)を使って判定する。
6. フローチャート風(ASCIIで動きを可視化)
偶数判定の流れ:
start
|
num % 2 == 0 ?
/ \
Yes No
| |
"偶数" "奇数"
\ /
end
複数判定(点数→判定):
start
|
score >= 90 ?
/ \
Y N
| score >= 70 ?
"A" / \
Y N
| score >= 50 ?
"B" / \
Y N
| "D"
"C"
7. 実践的な例題(3つ) — コード+出力付き
例題1:年齢で料金を判定(子ども/大人/高齢者)
int age = 68;
if (age < 13) {
System.out.println("子ども料金");
} else if (age <= 64) {
System.out.println("大人料金");
} else {
System.out.println("高齢者割引");
}
// 出力: 高齢者割引
Java例題2:ログイン処理の簡易チェック(ユーザ名とパスワード)
String user = "alice";
String pass = "pw123";
if (user.equals("alice") && pass.equals("pw123")) {
System.out.println("ログイン成功");
} else {
System.out.println("ユーザ名またはパスワードが違います");
}
// 出力: ログイン成功
Java※ 文字列比較は == ではなく equals を使う(== は参照比較)。
例題3:数列の符号判定(正/負/ゼロ)
int x = 0;
if (x > 0) {
System.out.println("正の数");
} else if (x < 0) {
System.out.println("負の数");
} else {
System.out.println("ゼロ");
}
// 出力: ゼロ
Java8. 練習問題
- 変数
nが 3 の倍数かどうかを判定してメッセージを出すプログラムを書け。 - 変数
temp(気温)が 30 以上なら「暑い」、20〜29 なら「過ごしやすい」、それ以外は「寒い」と表示するプログラムを書け。 - 2 つの整数
abのうち、大きい方を表示するプログラムを書け(等しいときは「同じです」と表示)。
解答サンプル(簡潔)
1.
int n = 9;
if (n % 3 == 0) {
System.out.println("3の倍数です");
} else {
System.out.println("3の倍数ではありません");
}
Javaint temp = 25;
if (temp >= 30) {
System.out.println("暑い");
} else if (temp >= 20) {
System.out.println("過ごしやすい");
} else {
System.out.println("寒い");
}
Javaint a = 7, b = 10;
if (a > b) {
System.out.println("a が大きい: " + a);
} else if (a < b) {
System.out.println("b が大きい: " + b);
} else {
System.out.println("同じです");
}
Java9. ワンポイント上級テク(覚えると便利)
- 早期リターン(ガード節):メソッドで条件を先にチェックして早く返すことでネストを浅くする。
void process(int x) {
if (x < 0) return; // ネガティブは処理しない
// 正の値だけの処理
}
Java- switch 文との使い分け:複数の固定値(整数や列挙型)を比較するときは
switchの方が読みやすい場合がある。 - 条件を関数化する:複雑な条件は関数にまとめると可読性アップ。
if (isEligible(user)) { ... }
最後に(実践のコツ)
- まずは紙に流れを書いてみる(if の木構造)。
- 小さなコードを書いて
System.out.printlnでどのブロックに入るか確かめながら学ぶ。 - よくあるバグ(
=と==、{}の省略、String比較)を覚えておくと安心。
