005-004-007
論理演算子で年齢制限を判定
中級
問題説明
論理演算子:条件の組み合わせ
いい調子です!この概念を理解できれば、次のステップに進む準備ができています。
学習目標
- 2次元配列の宣言と初期化を実装できる
- 配列要素へのアクセスを適用できる
- lengthプロパティを使用してデータ規模を計算できる
論理演算子は複数のboolean式を組み合わせて複合条件評価を可能にします。範囲チェック、多基準バリデーション、複雑なビジネスルールを単一の式で実装するための基礎です。
学習ポイント
- AND (&&): 両方の条件がtrueの場合のみtrue
- OR (||): 少なくとも一方がtrueならtrue
- NOT (!): boolean値を反転
- 短絡評価: 結果が確定した時点で評価を停止
演算子の真理値表
| A | B | A && B | A || B |
|---|---|---|---|
| true | true | true | true |
| true | false | false | true |
| false | true | false | true |
| false | false | false | false |
範囲チェックパターン
// 値が[min, max]の範囲内かチェック
if (value >= min && value <= max) {
// 範囲内
}よくある間違い
エラーが出ても心配いりません。もう一度コードを確認してみましょう。
間違い1: &&の代わりに&を使用
問題のあるコード:
if (obj != null & obj.getValue() > 0) // NullPointerExceptionのリスク!
// &は左辺がfalseでも両辺を評価する正しいコード:
if (obj != null && obj.getValue() > 0) // 安全:短絡評価
// &&は左辺がfalseなら停止間違い2: 演算子の優先順位の混乱
紛らわしいコード:
if (a || b && c) // &&の優先度が高い!
// 評価順序: a || (b && c)明確なコード:
if ((a || b) && c) // 明示的なグループ化間違い3: 複合条件の否定
ド・モルガンの法則:
!(a && b) == (!a || !b)
!(a || b) == (!a && !b)短絡評価の利点
- null安全:
obj != null && obj.method() - パフォーマンス: 不要な重い処理をスキップ
- デフォルト値:
value != null ? value : default
実務での活用
- 年齢制限:
age >= 18 && age <= 65 - フォームバリデーション:
!isEmpty(name) && isValidEmail(email) - 権限チェック:
isAdmin || isOwner - null安全アクセス:
list != null && !list.isEmpty()
前提知識の詳細説明
この問題を解くために必要な知識を確認しましょう。
基本概念
この問題で扱うプログラミングの基本概念を理解することが、正しい解答への第一歩です。コードの各要素がどのように連携して動作するかを把握しましょう。
実装アプローチ
問題を解くための考え方を段階的に整理します:
- 問題文を読み、入力と出力の関係を理解する
- 必要な変数やデータ構造を特定する
- 処理の流れを組み立てる
- テストケースで動作を確認する
