在我的代码中,如果条件应该根据命令行参数而改变。 例如,在下面的代码中:
int a = Integer.parseInt(args[0]);
for (int i = 0; i < 100000; i++)
{
if (a == 2)
if ((i % 25 == 0) || ((i+1) % 25 == 0)
// do something
else if (a == 3)
if ((i % 25 == 0) || ((i+1) % 25 == 0) || ((i + 2) % 25 == 0))
// do something
//...
}
如果命令行参数增加,则内部条件的数量为&#34;如果&#34;也应该增加。所以&#34;如果&#34;条件取决于命令行参数,它可以在1到50之间。我需要一些最佳方法来避免写入&#34;如果&#34;条件50次。
答案 0 :(得分:3)
如果你不介意使用布尔标志,你可以这样做:
boolean matched;
for (int iter = 0; iter < a; iter++) {
if ((i + iter) % 25 == 0) {
matched = true;
break;
}
}
if (matched) {
//...
}
我没有对此进行测试,但它应该可行。它的作用是循环,对于0和a-1之间的每个数字iter
,检查i + iter mod 25是否为零。如果是,则将标志设置为true
,无论它是否已经存在。这模拟了||
的操作,它通过每个操作,如果有的话,停止比较并返回true
。如果您想要&&
,则默认情况下会将matched
设置为true
,如果失败则会false
。
如果您愿意,也可以将其包装在一个方法中:
boolean functionNameHere(int a, int i) {
boolean matched;
for (int iter = 0; iter < a; iter++) {
if ((i + iter) % 25 == 0) {
matched = true;
break;
}
}
return matched;
}
取决于i
和a
的设置方式。
答案 1 :(得分:0)
我认为应该是这样的
boolean ifArgument(int a) {
for (int j = 0; j < a; j++){
if ((i+j) % 25 == 0) {
return true;
}
}return false;
}