我想知道我是否可以将此代码转换为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();
}
}
}
答案 0 :(得分:2)
任何for
循环都可以直接转换为while
循环。 for
循环具有以下模式:
for (initialization; termination; increment) {
body
}
等效的while
结构是:
initialization
while (termination) {
body
increment
}
如果确保for
循环的主体至少执行一次(在您的具体示例中,但不是一般),您也可以将其转换为{{1} } loop:
do-while
请注意,如果initialization
do {
body
increment
} while (termination);
可能在termination
之后立即false
,则initialization
结构 等同于do-while
}循环。
另请注意,如果for
循环的initialization
表达式包含变量声明,如下所示:
for
然后将其转换为for (int i = 0; i < 10; ++i) { ... }
或while
循环并不完全等效,因为您将拥有一个局部变量do-while
,该变量将在循环结束后保留在范围内。相反,在i
循环中,只要循环退出,for
中声明的任何变量都会超出范围。
最后,这是非常糟糕的结构化编程,但可以使用initialization
循环结合do-while
和if
来完全复制break
的逻辑循环:
for
我绝对会建议不要这样做,但我只是注意到它可用。
答案 1 :(得分:0)
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++;
}
}