是否可以基于两个(或多个)先前的“ if”的结果来创建“ else”?

时间:2019-07-10 15:21:02

标签: java

当前,我在if (roobaf)块中有一些代码,这取决于foobar为假。我可以在块中再次检查这些条件,但是感觉像是不必要的代码重复。

if (foo) {
    // some code
}

/*else*/ if (bar) {   // bar is a condition which needs to be checked 
                      // whether 'foo' is true or false
// more code
}

if (roobaf) { 

   if (!foo && !bar) {
      // even more code
    }

}

问题在于,如果bar只是if,那么即使foo为true,也将到达roobaf

如果我将bar更改为else if,则如果foo为true,则不会检查bar

如何确保始终选中foobar,但是只有同时选中roobaffoo时才选中bar

roobaf是不能与foobar互斥的条件,因此将其放在首位将不起作用。

2 个答案:

答案 0 :(得分:6)

您可以执行以下操作:

if (foo || bar) {
    if (foo) {
        // do something
    }
    if (bar) {
        // do something
    }
}
else {
    if (roobaf) {
        // do something else
    }
}

答案 1 :(得分:1)

我可以看到nLee的解决方案可能是最好的解决方法,但是您似乎不愿意再次输入foobar,因此您始终可以在内部将条件设置为false的身体作为替代。

注意:我个人认为这不是使if语句嵌套更少的好方法。

roobaf = true; //Initial Condition
if (foo){
    //Other code
    roobaf = false;
}
if (bar){
    //Other code
    roobaf = false;
}
if (roobaf) {
   //Other code
}