繁体   English   中英

将 for 循环更改为 while

[英]Change for-loop to a while

如何将以下代码更改为 while-loop?

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 ,初始化应该在外循环完成:

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循环

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

while循环

while (break condition) {
    body of loop
}

while循环中唯一缺少的是计数器初始化和计数器递减/递增。 通常,当您需要循环计数器时,您将使用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;
}

实现这种转换的最简单方法是从内到外开始。 意思是,go 到最里面的循环,按照我的建议进行转换,然后解决问题。 无论您的循环有多嵌套,您都应该能够将任何for转换为while循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM