是否可以根据其他条件对循环使用不同的条件?
例如
boolean isDfa = true;
如果isDfa
为true
,我希望while循环的条件为:
while(!s.hasAllTransitions())
,否则,如果isDfa
为false
,我希望while循环的条件为:
while(!input.equals("next"))
使用两个单独的循环是实现此目的的唯一方法吗?
答案 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");
}
}