如何根据 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;
}

取决于 ia 的设置方式。

我觉得应该是这样的

boolean ifArgument(int a) {
    for (int j = 0; j < a; j++){
        if ((i+j) % 25 == 0) {
            return true;
        }
    }return false;
}