如果数字等于0,则选择无限循环或循环直到某个数字(如果该数字大于0) - Java

时间:2015-02-23 04:15:23

标签: java loops if-statement for-loop

如果数字等于0,我想使用for循环无限循环,如果数字大于0,则循环直到该数字。这是代码,以帮助直观地了解我得到的内容。

    for (int i = 0; i < this.getNumRounds(); i++) {
        // 30 some lines of code
    }

    for ( ; ; ) {
        // 30 some lines of code
    }

如果getNumRounds()大于0,则执行第一个循环,如果等于0,则执行第二个循环。我更喜欢这样做而不复制和粘贴我的30行代码两次并使用if语句看到代码是冗余的,虽然我可以使用函数来取出冗余,但我想看看是否有另一种选择。

5 个答案:

答案 0 :(得分:2)

使用强大的三元运算符:

for (int i = 0; this.getNumRounds() == 0 ? true : i < this.getNumRounds(); i++) {
    // 30 some lines of code
}

正如yshavit的评论中所指出的,有一种更简洁,更清晰的表达方式:

for (int i = 0; this.getNumRounds() == 0 || i < this.getNumRounds(); i++) {
    // 30 some lines of code
}

答案 1 :(得分:1)

您是否考虑过使用while循环?

int i = 0;
while(i < this.getNumRounds() || this.getNumRounds() == 0) {
//some 30 lines code
i++
}

答案 2 :(得分:0)

所以你想要这样的东西:

int num = //whatever your number equals
if (num == 0) {
    boolean running = true;
    while (running) {
        doLoop();
    }
} else {
    for (int i = 0; i < num; i++) {
        doLoop();
    }
}

private void doLoop() {
    //some 30 lines of code
}

此代码将循环的内容放在一个单独的方法中,并检查该数字是否等于0.如果是,则程序将永远运行doLoop()方法。否则,它会一直运行,直到我等于数字。

答案 3 :(得分:0)

虽然最好只创建一个方法并使用if语句,但你可以在for循环中添加一个if语句来减少每次迭代。它看起来像是:

for (int i = 0; i <= this.getNumRounds(); i++) {
    if(this.getNumRounds() == 0){
        i--;
    }
    // 30 some lines of code
}

注意我已将i < this.getNumRounds()更改为i <= this.getNumRounds。这样,如果轮数为零,则将调用循环。

答案 4 :(得分:0)

您可以执行以下操作。

for (int i = 0; i < this.getNumRounds() || i == 0; ++i) {
    do {
        // 30 lines of code
    } while (this.getNumRounds() == 0);
}

如果getNumRounds计算起来非常重要,请考虑将其拉出循环并仅调用一次。