Java の論理演算子「&&, ||, !」とは?条件を組み合わせる方法
新人
「Java で複数の条件を組み合わせるにはどうすればいいですか?」
先輩
「Java には 論理演算子 というものがあって、複数の条件を一緒にチェックできるんだよ。」
新人
「具体的にどんな記号を使いますか?」
先輩
「論理演算子には、&&(AND)、||(OR)、!(NOT) があるよ。これを使うと、条件を組み合わせたり、反転させたりできるんだ。」
1. 論理演算子とは?(基本的な説明)
Java の 論理演算子 は、複数の条件を組み合わせるために使います。
論理演算子の種類
- &&(AND) … 2 つの条件が両方とも
trueのときにtrueになる - ||(OR) … どちらかの条件が
trueのときにtrueになる - !(NOT) … 条件の結果を反転させる(
trueならfalse、falseならtrue)
例えば、次のようなコードで論理演算子を使えます。
public class LogicalOperators {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
System.out.println("a && b: " + (a && b)); // AND
System.out.println("a || b: " + (a || b)); // OR
System.out.println("!a: " + !a); // NOT
}
}
a && b: false
a || b: true
!a: false
このように、論理演算子を使うことで、条件を組み合わせたり、反転させたりすることができます。
2. 「&&(AND)」と「||(OR)」の基本的な使い方
Java では、&&(AND) と ||(OR) を使って条件を組み合わせることができます。
&&(AND)の例
&& は、両方の条件が true のときにだけ true になります。
public class AndExample {
public static void main(String[] args) {
int age = 25;
boolean hasTicket = true;
boolean canEnter = (age >= 20) && hasTicket;
System.out.println("入場できるか?: " + canEnter);
}
}
入場できるか?: true
この例では、年齢が 20 以上 かつ チケットを持っている場合のみ、入場が許可されます。
||(OR)の例
|| は、どちらかの条件が true なら、結果が true になります。
public class OrExample {
public static void main(String[] args) {
int age = 17;
boolean hasParent = true;
boolean canEnter = (age >= 18) || hasParent;
System.out.println("保護者同伴なら入場できるか?: " + canEnter);
}
}
保護者同伴なら入場できるか?: true
この例では、年齢が 18 以上 または 保護者が同伴している場合、入場が許可されます。
3. 「!(NOT)」の使い方(条件を反転させる)
Java では、!(NOT)を使うことで、条件の結果を反転させることができます。
!(NOT)の基本的な使い方
!(NOT)は、true を false に、false を true に変える演算子です。
public class NotExample {
public static void main(String[] args) {
boolean isSunny = true;
boolean isNotSunny = !isSunny;
System.out.println("晴れているか?: " + isSunny);
System.out.println("晴れていないか?: " + isNotSunny);
}
}
晴れているか?: true
晴れていないか?: false
このように、! を使うと、元の条件と逆の結果を得ることができます。
4. 論理演算子を使った条件判定の例
論理演算子を使うと、条件を組み合わせて判定できます。
例1: 複数の条件を組み合わせる
例えば、年齢が 18 歳以上で運転免許を持っているかどうかを判定してみましょう。
public class DrivingEligibility {
public static void main(String[] args) {
int age = 20;
boolean hasLicense = true;
boolean canDrive = (age >= 18) && hasLicense;
System.out.println("運転できるか?: " + canDrive);
}
}
運転できるか?: true
この例では、「年齢が 18 歳以上」かつ「運転免許を持っている」という 2 つの条件がどちらも true の場合のみ、運転が許可されます。
例2: どちらかの条件が満たされればOK
今度は、「年齢が 18 歳以上 または 保護者が同伴している場合に入場できるか」を判定してみましょう。
public class AdmissionCheck {
public static void main(String[] args) {
int age = 16;
boolean hasParent = true;
boolean canEnter = (age >= 18) || hasParent;
System.out.println("入場できるか?: " + canEnter);
}
}
入場できるか?: true
この場合、年齢が 18 歳未満でも、保護者が同伴していれば入場できます。
5. 条件を組み合わせて使う方法
論理演算子は、組み合わせることで複雑な条件判定が可能になります。
例1: 学生割引の適用条件
次のコードでは、「学生である」 かつ 「学生証を持っている」場合に、割引が適用されるかどうかを判定します。
public class StudentDiscount {
public static void main(String[] args) {
boolean isStudent = true;
boolean hasStudentID = false;
boolean getDiscount = isStudent && hasStudentID;
System.out.println("学生割引が適用されるか?: " + getDiscount);
}
}
学生割引が適用されるか?: false
このように、両方の条件が満たされないと割引は適用されません。
例2: 入場制限の条件を設定
例えば、「12 歳未満は入場不可」「12 歳以上なら OK」「保護者同伴なら年齢制限なし」というルールを作ることができます。
public class AgeRestriction {
public static void main(String[] args) {
int age = 10;
boolean hasGuardian = true;
boolean canEnter = (age >= 12) || hasGuardian;
System.out.println("入場可能か?: " + canEnter);
}
}
入場可能か?: true
この場合、年齢が 12 歳未満でも保護者が同伴していれば入場できます。
6. 論理演算子を使った計算の例(複数の条件を組み合わせる)
論理演算子を使うことで、複数の条件を組み合わせて、より柔軟な判定ができます。
例1: 年齢制限と会員資格のチェック
例えば、18 歳以上 かつ 会員である場合に特典を受けられるかどうかを判定するプログラムを作ります。
public class MembershipCheck {
public static void main(String[] args) {
int age = 20;
boolean isMember = true;
boolean getBenefits = (age >= 18) && isMember;
System.out.println("特典を受けられるか?: " + getBenefits);
}
}
特典を受けられるか?: true
この場合、年齢が 18 歳以上であり、なおかつ会員である場合のみ、特典を受けられます。
例2: ショッピングの割引適用
次のプログラムでは、購入金額が 5000 円以上 または クーポンを持っている場合に割引が適用されるかどうかを判定します。
public class DiscountCheck {
public static void main(String[] args) {
int purchaseAmount = 4000;
boolean hasCoupon = true;
boolean getDiscount = (purchaseAmount >= 5000) || hasCoupon;
System.out.println("割引が適用されるか?: " + getDiscount);
}
}
割引が適用されるか?: true
このように、購入金額が基準に達しなくても、クーポンを持っていれば割引を受けられます。
7. 比較演算子と論理演算子を組み合わせる方法
論理演算子は、比較演算子と組み合わせることで、より詳細な条件判定ができます。
例1: テストの合格判定
例えば、国語と数学の両方の試験が 60 点以上であれば合格とする判定を行います。
public class ExamPassCheck {
public static void main(String[] args) {
int japaneseScore = 65;
int mathScore = 70;
boolean isPassed = (japaneseScore >= 60) && (mathScore >= 60);
System.out.println("合格したか?: " + isPassed);
}
}
合格したか?: true
この場合、両方の点数が 60 点以上であれば合格になります。
例2: 無料配送の条件
購入金額が 5000 円以上 または プライム会員なら無料配送になるルールを作成します。
public class FreeShippingCheck {
public static void main(String[] args) {
int purchaseAmount = 3000;
boolean isPrimeMember = true;
boolean freeShipping = (purchaseAmount >= 5000) || isPrimeMember;
System.out.println("無料配送になるか?: " + freeShipping);
}
}
無料配送になるか?: true
この場合、購入金額が 5000 円未満でもプライム会員であれば無料配送が適用されます。
8. 練習問題:論理演算子を使ったプログラムを作ろう
最後に、論理演算子を活用した練習問題を出題します。
問題1: 旅行に行けるかどうかを判定する
以下の条件を満たしている場合に旅行に行けると判定するプログラムを作成してください。
- お金が 5 万円以上ある
- 休みが 3 日以上ある
public class TravelCheck {
public static void main(String[] args) {
int money = 60000;
int vacationDays = 2;
boolean canTravel = (money >= 50000) && (vacationDays >= 3);
System.out.println("旅行に行けるか?: " + canTravel);
}
}
旅行に行けるか?: false
問題2: 映画を観られるかどうかを判定する
次のルールに従って映画を観られるか判定するプログラムを作成してください。
- 年齢が 15 歳以上
- または、親が同伴している
public class MovieCheck {
public static void main(String[] args) {
int age = 14;
boolean hasParent = true;
boolean canWatchMovie = (age >= 15) || hasParent;
System.out.println("映画を観られるか?: " + canWatchMovie);
}
}
映画を観られるか?: true
このように、論理演算子を活用すると、条件を柔軟に組み合わせることができます。