与what is the fastest algorithm for permutations of three condition?和Fastest way to find correct combination with set of 8 booleans
类似我有三个boolean
值(称为a
,b
和c
),每个值根据哪些值为真而具有不同的操作。这里有一个奇怪的情况;如果a
为false,则c
也必须为false。有六种可能性,这导致了一个相当长而丑陋的if
语句链。这就是我想出的:
if (a)
{
if (b)
{
if (c)
{
doAction1(); // a = true, b = true, c = true
}
else
{
doAction2(); // a = true, b = true, c = false
}
}
else
{
if (c)
{
doAction3(); // a = true, b = false, c = true
}
else
{
doAction4(); // a = true, b = false, c = false
}
}
}
else
{
if (b)
{
doAction5(); // a = false, b = true, c = false
}
else
{
doAction6(); // a = true, b = false, c = false
}
}
我希望代码是可读且快速的,这意味着我不想使用任何奇怪的按位操作。这不是家庭作业,只是个人项目的简化版本。
答案 0 :(得分:5)
你总是可以写
if (a && b && c)
{
action1 ();
}
else if (a && b && ! c)
{
action2 ();
}
else if (a && ! b && c)
{
action3 ();
}
else if (a && ! b && ! c)
...
可以说具有较少的嵌套级别和较少的仅仅是噪声的支撑使其更具可读性。而且你不再需要评论了。
答案 1 :(得分:0)
if(a && b && c){
//a b c true
}
else if(!a && b && !c){
//a false b true c false
}
else if(a && !b && c{
//a true b false c true
}
//etc