[英]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;
}
你这里有几个问题。 首先,您需要在for
和while
循环中保留相同的条件。 其次,您需要使用与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.