将 for 循环更改为 while

Change for-loop to a while

如何将以下代码更改为 while 循环?

for (int i = 12; i < 40; i += 14) {
    for (int j = 30; j > 10; j -= 9) {
        System.out.println(i + "+" + j + "=" + (i + j) + "");
    }
}

我试过了,但没用:

public class WhileExample {
    public static void main(String[] args) {
        int i = 12;
        int j = 10;
        while (i <= 40) {
            while (j <= 30) {
                System.out.println(i + "+" + j + "=" + (i + j) + "");
                j++;
            }
            i++;
        }
    }
}

您要找的答案:

int i = 12;
while (i < 40) {
    int j = 30;
    while (j > 10) {
        System.out.println(i + "+" + j + "=" + (i + j) + "");
        j -= 9;
    }
    i += 14;
}

你这里有一些问题。首先,您需要在 forwhile 循环中保留相同的条件。其次,您需要使用 for 循环使用的相同增量,而不仅仅是 ++ 调用。第三,你没有像在循环中那样初始化 j,初始化应该在 inside 外循环中完成:

public class WhileExample {
    public static void main(String[] args) {
        int i = 12;
        while (i < 40) {
            int j = 30;
            while (j > 10) {
                System.out.println(i + "+" + j + "=" + (i + j) + "");
                j -= 9;
            }
            i += 14;
        }
    }
}

以下是解决您的问题的工作代码,您没有再次看到 j 的值为默认值,

public class WhileExample {

  public static void main(String[] args) {
    int i = 12;
    int j = 30;
    while (i < 40) {
      while (j > 10) {
        System.out.println(i + "+" + j + "=" + (i + j) + "");
        j -= 9;
      }
      i += 14;
      j = 30;
    }
  }
}

要将任何 for 循环转换为 while 循环,您必须了解这两个循环的结构。一般来说,两个循环的构造如下:

for-loop

for (loop counter initialization; break condition; counter increment/decrement) {
    body of loop
}

while-loop

while (break condition) {
    body of loop
}

while 循环中唯一缺少的是计数器初始化和计数器 decrement/increment。通常,当您需要循环计数器时,您将使用 for 循环。当您不需要循环计数器时,您将使用 while 循环。但是,这不是语言强制执行的规则。你可以像这样使用带有计数器变量的 while 循环:

int counter = 0;
while (break condition) {
    body of loop
    counter++;
}

或者,如果您想使用不带计数器的 for 循环:

for (;break condition;) {
    body of loop
}

或者像这样更疯狂的事情:

for (;;) {
    body of loop
    if (break condition) {
        break;
    }
}

显然,最好的办法是将循环用于其预期目的:当需要循环计数器时使用 for 循环,当不需要时使用 while 循环。

根据这里的信息,你应该可以看出:

for (int i = 12; i < 40; i += 14) {
    for (int j = 30; j > 10; j -= 9) {
        System.out.println(i + "+" + j + "=" + (i + j) + "");
    }
}

应翻译为:

int i = 12;

while (i < 40) {
    int j = 30; // initializing this outside the outer `while` is a logic error
    while (j > 10) {
        System.out.println(i + "+" + j + "=" + (i + j) + "");
        j -= 9;
    }
    i += 14;
}

实现此转换的最简单方法是从内到外开始。意思是,转到最里面的循环,按照我的建议转换它,然后自己解决。无论你的循环有多嵌套,你都应该能够将任何 for 转换为 while 循环。