变量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表达式存储在适当的索引中。但是,我的条件不是最终的,也不是最终的。#34;所以它们不能用在Java中的lambda表达式中。
此处的目标是获取while (true)
或while (false)
并完成它。从while (...something)
开始评估为false
然后在循环内做一些事情,将所有条件逐个变为真。但是在所有条件都成立之前,请保持循环。
伪代码(我知道它有一些缺陷,只是为了演示):
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
另外,这是教我钓鱼而不是给我鱼类问题。
答案 0 :(得分:1)
让我们说你已经定义了条件清单。
boolean[] condition = new boolean[n];
a
是您要检查的布尔值的数量,因此只需创建一个新变量
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
}
在这种情况下,您将总共检查a
条件,这就是您想要的。
答案 1 :(得分:0)
private boolean helper(a) {
boolean b = false;
switch (a) {
case 2: b = b || condition_3;
case 1: b = b || condition_2;
case 0: b = b || condition_1;
}
return b;
}
我无法想到任何你无法提供辅助功能的情况。如果这是真的,我想了解它。 (事实上在python的情况下,答案还建议你使用帮助器(以lambda形式))