我如何完全重启for循环或if语句?

时间:2015-05-12 01:18:18

标签: java if-statement for-loop

我正在寻找这两个问题的答案,因为任何一个都适用于我的代码。是否有一个函数或某些内容将完全重新启动for循环或重新运行if语句?对于for循环,假设它是

for(int i = 0; i<=30; i++){
   //code here
}

此时它已经到了i = 5,我怎么能告诉它回到i = 0

对于if语句,假设if语句为:

if(i == 1 && j == 2){
  //more code here
}

如果if语句为if,如何完全重新运行true语句,如何在if语句的末尾告诉它?

5 个答案:

答案 0 :(得分:6)

TL; DR 听起来你想要一个while循环或者可能是一个递归函数。

for循环版本

您无法重新启动if语句,但您可以在for循环中修改循环控制变量。只需执行i = 0;并注意无限循环,如下所示:

for(int i = 0; i < 30; i++) {
    // do stuff
    if(someCondition) {
        i = 0;
    }
}
但是,这并不是一种非常好的风格,并且可能会导致一些难以找到的恶魔。人们不习惯在for循环中寻找对循环控制变量的修改,因为它是你的那些东西之一。只是。唐&#39;吨。做。

while循环版本

因此,如果您打算在循环中修改for,则应使用while循环而不是i循环。

示例:

int i = 0;
while(i < 30) {
    // do stuff
    if(someCondition) {
        i = 0;
    } else {
        i++;
    }
}

递归函数版本

根据您真正想做的事情,您可能还会考虑创建一个函数并递归调用它:

function myFunction() {
    // do stuff
    if(someCondition) {
        myFunction(); // this is the recursion
    }
}
for(int i = 0; i < 30; i++) {
    myFunction();
}

通过所有这些方法,注意无限循环!如果你不小心,它们很容易制作。

答案 1 :(得分:1)

小心这样做。你可能陷入一个你无法摆脱的循环中。

for(int i = 0; i<=30; i++){
   //code here
    if (some condition) {i=0;}
}

答案 2 :(得分:1)

通常,您可以针对您的问题使用continuebreak语句,但他们不会初始化回i = 0

但是,对于您的问题,以下内容是合适的:

for(i=0; i<30; i++){
    if(condition check) {i=0;}
    // other code
}

答案 3 :(得分:-1)

所有其他答案均不正确,因为在第一次迭代中,i=0;i设置为0,然后在for循环中将i++设置为{{1} },因此基本上您再也不会从1开始,如果要检查数组i=0,这将总是跳过第一个数组元素。

答案 4 :(得分:-1)

通过将 i 设置为 -1,您可以重新启动 for 循环,但请注意不要像将 i 设置为 -1 那样进入无限循环。