【问题标题】:How would I completely restart a for loop or an if statement?我将如何完全重新启动 for 循环或 if 语句?
【发布时间】:2015-07-22 16:42:06
【问题描述】:

我正在寻找这两个问题中的任何一个的答案,因为其中任何一个都适用于我的代码。是否有函数或东西可以完全重新启动 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 语句是true,我将如何告诉它在if 语句的末尾完全重新运行if 语句?

【问题讨论】:

  • @Ed 是对的,使用递归!

标签: java if-statement for-loop


【解决方案1】:

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

【讨论】:

  • 虽然此代码 sn-p 可能是解决方案,但包含解释确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
  • 通过在执行“for”语句时将 i 设置为 -1,i++ 将 i 从 -1 递增到 0,然后在 i=0 时进入 for 块后检查条件。因此它就像 for 循环重新启动
【解决方案2】:

所有其他答案都不正确,因为在第一次迭代中i=0;i 设置为0,然后在for 循环中将i++ 增加到1,所以基本上你永远不会从@987654326 开始再次@,如果你想检查数组a[i],这将导致总是跳过第一个数组元素。

【讨论】:

    【解决方案3】:

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

    for 循环版本

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

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

    不过,这不是很好的风格,并且可能会导致一些难以找到的恶魔般的错误。人们不习惯在for 循环中寻找对循环控制变量的修改,因为它是你的那些事情之一。只是。别。做。

    while 循环版本

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

    例子:

    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();
    }
    

    使用所有这些方法,请注意无限循环!如果您不小心,它们很容易创建。

    【讨论】:

    • 提醒一下,如果你使用递归函数,请记住Java中有嵌套深度。在某些情况下会抛出stackOverflowException。
    【解决方案4】:

    通常您可以使用continuebreak 语句来解决您的问题,但它们不会初始化回i = 0

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

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

    【讨论】:

      【解决方案5】:

      这样做要小心。您可能会陷入无法摆脱的循环。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-03-26
        • 1970-01-01
        • 1970-01-01
        • 2021-03-28
        • 1970-01-01
        • 2013-02-06
        • 1970-01-01
        相关资源
        最近更新 更多