【问题标题】:Java code print powersJava 代码打印能力
【发布时间】:2017-03-26 02:18:01
【问题描述】:

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

【问题讨论】:

  • 请遵循命名约定,将您的 printPowers 命名为 PrintPowers

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


【解决方案1】:

任何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 循环。

还要注意,如果for 循环的initialization 表达式包含如下变量声明:

for (int i = 0; i < 10; ++i) { ... }

然后将其转换为whiledo-while 循环并不完全等效,因为您将拥有一个局部变量i,该变量在循环结束后仍保留在范围内。相比之下,在for 循环中,initialization 中声明的任何变量都会在循环退出后立即超出范围。

最后,结构化编程非常糟糕,但可以使用do-while 循环结合ifbreak 来精确复制for 循环的逻辑:

initialization
do {
    if (!termination) break;
    body
    increment
} while (true);

我绝对会建议不要这样做,但我只是注意到它是可用的。

【讨论】:

  • 谢谢 Ted,我是编程新手。
【解决方案2】:
 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++;
    }

  }

【讨论】:

  • 您好,我是这样做的,但它不会打印表格。我该怎么办? public static void printTable() { final int NMAX=4;最终双 XMAX=5; System.out.println();双 x = 1;而(x
猜你喜欢
  • 2012-05-19
  • 2013-02-26
  • 1970-01-01
  • 1970-01-01
  • 2020-07-12
  • 2010-12-27
  • 1970-01-01
  • 2017-04-30
  • 2021-01-22
相关资源
最近更新 更多