如何制作"如果"条件会根据Java中的命令行参数自动更改?

时间:2015-04-27 21:28:01

标签: java if-statement command-line-arguments

在我的代码中,如果条件应该根据命令行参数而改变。 例如,在下面的代码中:

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次。

2 个答案:

答案 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;
}

取决于ia的设置方式。

答案 1 :(得分:0)

我认为应该是这样的

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