如何根据 Java 中的命令行参数自动更改 "if" 条件?
How to make "if" condition change automatically depending on Command Line Argument in Java?
在我的代码中,if 条件应该根据命令行参数改变。
例如在下面的代码中:
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
//...
}
如果命令行参数增加,"if" 中的条件数也应该增加。所以 "if" 条件取决于命令行参数,它可以在 1 到 50 之间。我需要一些最佳方法来避免写 "if" 条件 50 次。
如果你不介意使用布尔标志,你可以这样做:
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
,不管它是否已经存在。这模拟了 ||
的动作,其中它遍历每个,如果有任何为真,则停止比较和 return 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
的设置方式。
我觉得应该是这样的
boolean ifArgument(int a) {
for (int j = 0; j < a; j++){
if ((i+j) % 25 == 0) {
return true;
}
}return false;
}
在我的代码中,if 条件应该根据命令行参数改变。 例如在下面的代码中:
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
//...
}
如果命令行参数增加,"if" 中的条件数也应该增加。所以 "if" 条件取决于命令行参数,它可以在 1 到 50 之间。我需要一些最佳方法来避免写 "if" 条件 50 次。
如果你不介意使用布尔标志,你可以这样做:
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
,不管它是否已经存在。这模拟了 ||
的动作,其中它遍历每个,如果有任何为真,则停止比较和 return 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
的设置方式。
我觉得应该是这样的
boolean ifArgument(int a) {
for (int j = 0; j < a; j++){
if ((i+j) % 25 == 0) {
return true;
}
}return false;
}