1. ホーム
  2. java

[解決済み] 3つのブール値のうち、少なくとも2つが真であるかどうかをチェックする

2022-03-17 10:45:11

質問

a、b、cの3つのブール変数が与えられたとき、3つのうち少なくとも2つが真であれば真を返すという質問です。

私の解答は以下の通りです。

boolean atLeastTwo(boolean a, boolean b, boolean c) {
    if ((a && b) || (b && c) || (a && c)) {
        return true;
    }
    else{
        return false;
    }
}

これをさらに改善できるというが、どのように?

どのように解決するのか?

書くよりも

if (someExpression) {
    return true;
} else {
    return false;
}

書いてください。

return someExpression;


表現そのものとしては、こんな感じ。

boolean atLeastTwo(boolean a, boolean b, boolean c) {
    return a ? (b || c) : (b && c);
}

またはこれ(どちらか把握しやすい方)。

boolean atLeastTwo(boolean a, boolean b, boolean c) {
    return a && (b || c) || (b && c);
}

このテストは ab をちょうど1回、そして c を最大1回までとする。

参考文献