如果数字等于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语句看到代码是冗余的,虽然我可以使用函数来取出冗余,但我想看看是否有另一种选择。
答案 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
计算起来非常重要,请考虑将其拉出循环并仅调用一次。