变量 a
可以是0、1或2,其中值是要具有的额外while循环条件数。我可以用 switch
以及 case
但我想知道有没有更好的方法?
switch (a) {
case 0: while (condition_1) {
// ...
} break;
case 1: while (condition_1 || condition_2) {
// ...
} break;
case 2: while (condition_1 || condition_2 || condition_3) {
// ...
} break;
}
在python中解决这个问题的方法是使用字典并将适当的lambda表达式存储在适当的索引中。但是,我的条件是“非final或有效final”,因此它们不能在java中的lambda表达式中使用。
这里的目的不是为了 while (true)
或者 while (false)
就这样吧。从一个 while (...something)
其计算结果为 false
然后在循环中做一些事情,将所有条件逐一更改为true。但在所有条件都成立之前,继续循环。
伪代码(我知道它有一些缺陷,只是为了演示):
a can be 0,1,2
p = 5
q = 7
r = 10
s = 14
if a = 1
while p != q -> p+=1
if a = 2
while p!= q || p!= r -> p+=1
另外,这是一个教我钓鱼而不是给我鱼型的问题。
2条答案
按热度按时间icomxhvb1#
提醒您java交换机支持失败。因为java中的switch case是语句而不是表达式,所以您需要一个helper函数来完成它:
我真的想不出任何情况下你不能把一个助手函数。如果这是真的,我想了解一下(实际上,在python的例子中,答案还建议您使用helper(lambda形式)
8yparm6h2#
假设您定义了一个条件列表。
boolean valid = false;
//check all conditions up to a
for (int i = 0; i < a; i++) {
if (condition[i]) {
valid = true;
break;
}
}
while (valid) {
//perform action and then run the checking valid code again
}