2016-11-22 3 views
-7

複数のブール値(6)をチェックしようとしているので、1,2,3などが真であれば異なるコードを実行したい。だからここ真であり、金額に応じて異なる実行ブール値の量を確認する

は一例です:

public static boolean x; 
public static boolean y; 
public static boolean z; 
public static boolean a; 
public static boolean b; 
public static boolean c; 
public static int amtTrue; 
//if x & y are true, then set amtTrue to 1 
//if y & z AND x & y are true, then set amtTrue to 2; 
//keep iterating though all possiblilites 

これを行うための最も効率的な方法だろうか?

ありがとうございました!

+1

を使用すると、この例を提供することはできますか?あなたが求めていることを伝えるのは非常に難しいです。 –

+0

これは本当にあなたが求めているものです。 – vlatkozelka

+2

これらのブール値は配列内にありますか? 6つの変数で?リストで?家で?マウスで? – samgak

答えて

4
int i = 0; 

for(boolean b : array) 
    if(b) i++; 

switch(i){ 
case 0: 

case 1: 

case 2: 

} 
2

6つのブール値だけでは何の問題もないので、最も読みやすいソリューションを作ることに集中することができます。

一つのアプローチは、このように、ループでカウントを行い、可変引数のヘルパーメソッドを作ることです。

public static int countTrue(boolean... x) { 
    int count = 0; 
    for (boolean b : x) { 
     if (b) { 
      count++; 
     } 
    } 
    return count; 
} 

次のようにあなたのif状態からそれを呼び出すことができ、簡単にツーのためにソリューション読み:

if (countTrue(bool1, bool2, bool3, bool4, bool5, bool6) > 4) { 
    ... 
} 

Demo.

関連する問題