Java代码打印功能

时间:2017-03-26 02:18:02

标签: java loops for-loop while-loop do-while

我想知道我是否可以将此代码转换为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();
    }
    }
    }

2 个答案:

答案 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-whileif来完全复制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++;
    }

  }