循环中的条件条件

时间:2014-10-24 19:39:51

标签: java conditional-statements

是否可以根据其他条件对循环使用不同的条件?

例如

boolean isDfa = true;

如果isDfatrue,我希望while循环的条件为:

while(!s.hasAllTransitions())

,否则,如果isDfafalse,我希望while循环的条件为:

while(!input.equals("next"))

使用两个单独的循环是实现此目的的唯一方法吗?

6 个答案:

答案 0 :(得分:8)

您可以结合条件:

while((isDfa && !s.hasAllTransitions()) || (!isDfa && !input.equals("next"))) {

}

答案 1 :(得分:1)

您可以使用以下条件:

while((isDfa && !s.hasAllTransitions()) || (!isDfa && !input.equals("next"))) {

}

答案 2 :(得分:1)

另一种方法:

if (isDfa) {
    while(!s.hasAllTransitions()) {

    }
}
else {
    while(!input.equals("next")) {

    }
}

答案 3 :(得分:1)

您可以使用三元运算符动态切换while条件

while(isDfa? !s.hasAllTransitions() : !input.equals("next")) {
  //do stuff
}

这就是说:如果isDfa为true且s.hasAllTransitions为false,则继续。但是,如果isDfa为false且输入不等于next,则继续。

答案 4 :(得分:1)

您可以使用三元运算符:

while ((isDfa) ? !s.hasAllTransitions() : !input.equals("next")) {
    ...
}

但有时候,不要试图将所有东西都塞进一个复杂的条件中,而是最好将其分解。考虑这样做:

while (true) {
    if (isDfa) {
        if (s.hasAllTransitions()) {
            break;
        }
    } else {
        if (input.equals("next")) {
            break;
        }
    }
    ...
} 

while (true) {
    boolean done;
    if (isDfa) {
        done = s.hasAllTransitions();
    } else {
        done = input.equals("next");
    }
    if (done) {
        break;
    }
    ...
} 

答案 5 :(得分:0)

你可以这样做:

boolean testBoolean = false;
while(!testBoolean)
{
   if(isDfa)
   {
       testBoolean = s.hasAllTransitions();
   }
   else
   {
       testBoolean = input.equals("next");
   }
}