我想知道是否可以将这段代码转换为while循环& do-while循环。这有可能吗?怎么可能?
public class printPowers {
public static void main(String[] args) {
final int NMAX=4;
final double XMAX=5;
System.out.println();
for (double x =1; x <= XMAX; x++){
for(int n =1; n <= NMAX; n++){
System.out.printf("%10.0f",Math.pow(x,n));
}
System.out.println();
}
}
}
发布于 2017-03-25 18:27:32
public static void main(String[] args)
{
final int NMAX=4;
final double XMAX=5;
System.out.println();
double x = 1;
while(x<=XMAX){
int n = 1;
while(n<=NMAX){
System.out.printf("%10.0f",Math.pow(x,n));
n++;
}
System.out.println();
x++;
}
}
发布于 2017-03-25 18:51:04
任何for
循环都可以直接转换为while
循环。for
循环具有以下模式:
for (initialization; termination; increment) {
body
}
等效的while
结构是:
initialization
while (termination) {
body
increment
}
如果保证for
循环的主体至少执行一次(在特定示例中是这样,但在一般情况下),则还可以将其转换为do-while
循环:
initialization
do {
body
increment
} while (termination);
注意,如果termination
在initialization
之后可能是false
,那么do-while
结构是而不是,它与for
循环等价。
还请注意,如果initialization
循环的for
表达式包含变量声明,如下所示:
for (int i = 0; i < 10; ++i) { ... }
然后,将其转换为while
或do-while
循环并不完全等价,因为这样您就有了一个局部变量i
,该局部变量在循环结束后仍在作用域中。相反,在for
循环中,只要循环退出,initialization
中声明的任何变量就会超出作用域。
最后,这是非常糟糕的结构化编程,但是可以使用do-while
循环与if
和break
组合起来精确地复制for
循环的逻辑:
initialization
do {
if (!termination) break;
body
increment
} while (true);
我肯定会建议不要这样做,但我只是注意到它是可用的。
https://stackoverflow.com/questions/43024241
复制