将for循环转换为while并在Java中执行while循环

时间:2013-10-02 01:18:56

标签: java

我创建了一对for循环打印线条(每个新数字开始一个新行,它不会在这里显示):

1
22个
333个
4444

等。直到它达到9然后再回到1.

我应该将它转换为while和while while循环,并且在过去一小时内一直在尝试,但似乎无法做到。

public static void main(String[] args) {  
   for (int x=1;  x <= 9; x++) {
       for (int y = 1; y <=x ; y++){
           System.out.print( x + "");
           }
       System.out.println();
       }

    // TODO code application logic here
  for (int x=9;  x >=1; x--) {
       for (int y = 1; y <=x ; y++){
           System.out.print( x + "");
           }
       System.out.println();

       }   int y =1;
  int x = 1;
  while (x <9){

      while (y <=x){
          y++;
  System.out.print(x +"");{
  }
  System.out.println();
}
 x++;
}

3 个答案:

答案 0 :(得分:4)

for循环语句在for (init; condition; post)中有三个部分。这些部分用分号分隔。 init部分指定一个初始语句,条件决定循环体是否被执行,post指定一个post循环语句。

您可以使用while循环执行相同的操作,除了不是单个语句,它实际上是几个语句。但是while循环与for循环不完全相同,因为continue语句及其行为方式是一个问题。稍后会详细介绍。

提示是for语句的各个部分用分号分隔,分号也用于分隔Java中的语句。

考虑以下for循环源示例。

int i;
for (i = 0; i < 5; i++) {
  // for loop body
}

所以你会在循环语句之前有一个init语句,i = 0然后循环语句本身包含条件i < 5,并且在结束大括号之前的循环中作为最后一行,你会设置后循环条件i++

由于评估do while条件时,while稍微复杂一些。在for循环和while循环中,将评估条件,如果表达式不为true,则根本不执行循环体,跳过它。在for循环的情况下,执行init语句,然后评估条件以确定是否应该执行for循环体。由于while循环没有作为while语句的一部分的init语句,因此将评估条件,如果不为真,则不执行while循环体。

do while循环的条件在第一次通过do while循环体之后才会计算。所以do while循环中的语句总是至少执行一次。然后评估do while条件,如果为true,则执行返回到do所在的顶部,再次执行do while循环体。

循环的几种变体的一些代码,其中init为i = 0且条件为i < 5且帖子为i++。在所有情况下,我都在循环体的外侧定义了变量i。对于for循环,在i语句中定义变量for会导致变量i的范围(其可见性)仅限于{{ 1}}循环体,对于其他类型的循环不是这种情况。

for

我提到在执行int i; for (i = 0; i < 5; i++) { // for loop body } int i = 0; while (i < 5) { // while loop body i++; } int i = 0; do { // do while loop body i++; } while (i < 5); 语句时发生的事情在比较这些形式的循环时会有所不同。想到它的方法是,当执行continue语句时,会跳转到包含continue语句的循环语句的右括号。所以这引入了一些需要考虑的事情。

查看上面的示例,但使用continue语句。在下面的所有示例中,都有一个continue语句,当变量continue的值为3时,会导致执行跳到循环体的末尾。

通过此更改,i循环将继续递增变量for,因为它的帖子是i语句的第三部分,在结束时执行环。但是对于for循环和while循环,变量do while的递增是循环体的一部分,因此当i执行时跳过到结尾循环,也跳过变量continue的增量。

i

您可以对int i; // first time init variable i to zero then evaluate condition for (i = 0; i < 5; i++) { // evaluate condition and execute loop body if true // for loop body if (i == 3) continue; // when i == 3 continue is executed to skip to end of loop } // at point of braces, post executed, condition evaluated int i = 0; while (i < 5) { // evaluate condition and execute loop body if true // while loop body if (i == 3) continue; // when i == 3 continue is executed to skip to end of loop i++; // variable i only incremented when this statement is executed } // braces indicate end of loop so jump back to top of loop int i = 0; do { // do while loop body if (i == 3) continue; // when i == 3 continue is executed to skip to end of loop // more statements which may be skipped by the continue i++; // variable i only incremented when this statement is executed } while (i < 5); // evaluate condition and jump to top of loop if true 循环do while条件进行更改,以通过使用预增量运算符将变量while的递增移动到i条件评估中,while运算符,在变量上,如下所示。我们使用预增量运算符,因为我们想在检查其值之前增加变量++

i

答案 1 :(得分:0)

for loop是一个与while loop非常相似的构造,除了它提供了一些额外的细节,可以减少boilerplate code

for循环的开头设置初始变量(在您的情况下为x),条件子句(x <= 9)和递增器(x++)。 while循环不会执行这些操作,只需运行一段代码,同时满足()中的条件子句。

for循环转换为while很简单 -

for(int x = 0; x < 10; x++) {

int x = 0;
while(x < 10) {
    x++;
}

while循环具有与for循环相同的所有功能,但没有语法糖。这应该可以帮助您转换问题中的循环,一般来说。

答案 2 :(得分:0)

尝试使用while循环:

int y = 1;
int x = 1;

while (x < 9) {

    y = 1;
    while (y <= x) {
            y++;

        System.out.print(x + "");


    }
    System.out.println();
    x++;
}