005-004-007

論理演算子で年齢制限を判定

中級

問題説明

論理演算子:条件の組み合わせ

いい調子です!この概念を理解できれば、次のステップに進む準備ができています。

学習目標

  • 2次元配列の宣言と初期化を実装できる
  • 配列要素へのアクセスを適用できる
  • lengthプロパティを使用してデータ規模を計算できる

論理演算子は複数のboolean式を組み合わせて複合条件評価を可能にします。範囲チェック、多基準バリデーション、複雑なビジネスルールを単一の式で実装するための基礎です。

学習ポイント

  • AND (&&): 両方の条件がtrueの場合のみtrue
  • OR (||): 少なくとも一方がtrueならtrue
  • NOT (!): boolean値を反転
  • 短絡評価: 結果が確定した時点で評価を停止

演算子の真理値表

ABA && BA || B
truetruetruetrue
truefalsefalsetrue
falsetruefalsetrue
falsefalsefalsefalse

範囲チェックパターン

// 値が[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()

前提知識の詳細説明

この問題を解くために必要な知識を確認しましょう。

基本概念

この問題で扱うプログラミングの基本概念を理解することが、正しい解答への第一歩です。コードの各要素がどのように連携して動作するかを把握しましょう。

実装アプローチ

問題を解くための考え方を段階的に整理します:

  1. 問題文を読み、入力と出力の関係を理解する
  2. 必要な変数やデータ構造を特定する
  3. 処理の流れを組み立てる
  4. テストケースで動作を確認する

コードを実行してみませんか?

この問題のコードエディタと実行機能を使用するには、ログインしてください。

アカウントをお持ちでない方