Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaで3つのboolean変数のうち2つがtrueかどうかを判定する方法


本記事では、3つのboolean変数のうち2つがtrueであるかどうかを判定する方法について解説します。boolean型とは、trueまたはfalseのいずれかの値のみを格納できるデータ型です。

以下に実行例を示します。

入力

入力値が次のとおりであるとします。

入力 : true, true, false

出力

期待される出力は次のとおりです。

結果 : 3つの変数のうち2つがtrueです

アルゴリズム

ステップ1 - 開始
ステップ2 - my_input_1、my_input_2、my_input_3、my_resultという4つのboolean変数を宣言する
ステップ3 - ユーザーから必要な値を読み込む、または値を定義する
ステップ4 - if-else条件文を用いて、3つの値のうち2つずつを論理演算子で比較する
ステップ5 - 結果を表示する
ステップ6 - 終了

判定ロジックのポイント

このプログラムの核となるのは、次の条件分岐です。

  • 1つ目の変数がtrueの場合:残りの2つのうち少なくとも1つがtrueであれば条件を満たすため、OR演算子(||)でmy_input_2 || my_input_3と判定します。
  • 1つ目の変数がfalseの場合:残りの2つが両方ともtrueでなければならないため、AND演算子(&&)でmy_input_2 && my_input_3と判定します。

このように論理演算子を組み合わせることで、「3つのうちちょうど2つがtrueである」という条件を簡潔に表現できます。

例1:ユーザーから入力を受け取る場合

ここでは、プロンプトに従ってユーザーが値を入力します。オンラインのコンパイルツールを使えば、この例をその場で試すこともできます。Javaで3つのboolean変数のうち2つがtrueかどうかを判定する方法

import java.util.Scanner;
public class BooleanValues {
   public static void main(String[] args) {
      boolean my_input_1, my_input_2, my_input_3, my_result;
      System.out.println("必要なパッケージをインポートしました");
      System.out.println("Scannerオブジェクトを定義しました");
      Scanner my_scanner = new Scanner(System.in);
      System.out.print("1つ目のboolean値を入力してください:");
      my_input_1 = my_scanner.nextBoolean();
      System.out.print("2つ目のboolean値を入力してください:");
      my_input_2 = my_scanner.nextBoolean();
      System.out.print("3つ目のboolean値を入力してください:");
      my_input_3 = my_scanner.nextBoolean();
      if(my_input_1) {
         my_result = my_input_2 || my_input_3;
      } else {
         my_result = my_input_2 && my_input_3;
      }
      if(my_result) {
         System.out.println("3つの変数のうち2つがtrueです");
      } else {
         System.out.println("3つの変数のうち2つがfalseです");
      }
   }
}

出力

必要なパッケージをインポートしました
Scannerオブジェクトを定義しました
1つ目のboolean値を入力してください:true
2つ目のboolean値を入力してください:true
3つ目のboolean値を入力してください:false
3つの変数のうち2つがtrueです

例2:値を事前に定義する場合

ここでは、3つのboolean値があらかじめ定義されており、その値を取得してコンソールに表示します。

public class BooleanValues {
   public static void main(String[] args) {
      boolean my_input_1, my_input_2, my_input_3, my_result;
      my_input_1 = true;
      my_input_2 = true;
      my_input_3 = false;
      System.out.println("3つのboolean値は " + my_input_1 + " 、 " + my_input_2 + " 、 " + my_input_3 + " と定義されています");
      if(my_input_1) {
         my_result = my_input_2 || my_input_3;
      } else {
         my_result = my_input_2 && my_input_3;
      }
      if(my_result) {
         System.out.println("3つの変数のうち2つがtrueです");
      } else {
         System.out.println("3つの変数のうち2つがfalseです");
      }
   }
}

出力

3つのboolean値は true 、 true 、 false と定義されています
3つの変数のうち2つがtrueです

まとめ

本記事では、3つのboolean変数のうち2つがtrueであるかを判定するJavaプログラムを、ユーザー入力を受け取るパターンと値を固定するパターンの2通りで紹介しました。if-else文と論理演算子(AND・OR)を組み合わせることで、シンプルなコードで条件判定を実現できます。この考え方は、複数の条件のうちいくつが成立しているかを調べたい場合など、さまざまな場面に応用できます。


  1. C言語プログラム:連続する「00」「111」を避けて、N個の0とM個の1を出力する方法

    N個の「0」とM個の「1」を組み合わせて数列を作ることを考えます。ただし、この数列には「00」(0が2つ連続)や「111」(1が3つ連続)という並びが含まれてはいけません。本記事では、その条件を満たす数列をC言語で出力する方法を解説します。 入力:N = 5、M = 9出力:1 1 0 1 1 0 1 1 0 1 0 1 0 1 数列が作れるための条件 まず押さえておきたいのが、数列の構成可否を判定する条件式です。次の条件がfalseである必要があります。 (m < n-1) || m >= 2 * (n + 1) この式がtrueになる場合、すなわち1が少なすぎる(m <

  2. C++で3つの点が同一直線上にあるかどうかを判定するプログラム

    3つの異なる座標を持つ点が与えられ、それらの点が同一直線上に並んでいるかどうか(共線性・コリニア)を判定するのが本記事のテーマです。3つの点がすべて同じ直線上に乗っている場合、これらの点は「共線(collinear)」であるといいます。逆に、異なる直線上に配置されている場合は共線ではありません。以下の図は、共線な点と共線でない点の違いを示したものです。入力例と出力例入力1x1 = 1, x2 = 2, x3 = 3, y1 = 1, y2 = 4, y3 = 5出力1no points are not collinear入力2x1 = 1, y1 = 1, x2 = 1, y2 = 4, x3