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:ユーザーから入力を受け取る場合
ここでは、プロンプトに従ってユーザーが値を入力します。オンラインのコンパイルツールを使えば、この例をその場で試すこともできます。
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)を組み合わせることで、シンプルなコードで条件判定を実現できます。この考え方は、複数の条件のうちいくつが成立しているかを調べたい場合など、さまざまな場面に応用できます。
-
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 <
-
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