【问题标题】:Convert this for loop into a while loop?将此for循环转换为while循环?
【发布时间】:2015-03-17 21:35:23
【问题描述】:

尝试将 for 循环的这段代码转换为 while 循环:

int endData = myScanner.nextInt();   
int row     =   0;
int cell    =   0;
int rowcell =   0;


    System.out.println("FOR LOOP: ");
    for (row = 1; row <= endData; row++) {

        if (row%2 == 0) {
            for (cell = 0; cell < row; cell++) {
                for (rowcell = 0; rowcell <= cell; rowcell++) {
                    System.out.print(row);
                }
                    System.out.println("");
            }

        }

         else {

            for (cell = row; cell > 0; cell--) {
                for (rowcell = cell; rowcell > 0; rowcell--) {
                    System.out.print(row);  
                }
                    System.out.println("");
            }

        }

    }

到目前为止,我已经尝试过这段代码,但结果完全错误:

    row2 = 1;

    while (row2 <= endData){

        if(row2%2 == 0){
            cell2=0;
            rowcell2 = 0;
            while(cell2<row2){
                cell2++;
                while(rowcell2 <= cell2){
                    rowcell2++;
                    System.out.print(row2);
                } System.out.println("");
        }

    }else {
        cell2=row2;
        rowcell2 = cell2;
        while(cell2 >0){
            cell2--;
        }while (rowcell2>0){
            rowcell2--;
            System.out.print(row2);
        }System.out.println("");
    } row2++;
    }

例如,当用户输入值 3 时,for 循环返回正确答案:
1
2
22
333
33
3

但是 while 循环输出:
1
22
2
第333章

关于如何解决这个 while 循环的任何想法?

【问题讨论】:

  • 为什么要让它成为一个while循环?这是何时使用 for 循环的完美用例。
  • 这是为了作业!

标签: java for-loop while-loop converter user-input


【解决方案1】:

我看到的一个错误是初始化

rowcell2 = 0;

应该在下面

while(cell2<row2){

【讨论】:

    【解决方案2】:

    cell 在 for 循环结束时递增,而 for (cell2) 在 while 循环开始时递增。其他问题也可能存在。

    for 循环在循环结束时执行最后一部分(cell++ 等)。

    【讨论】:

      【解决方案3】:

      转换它所要做的就是在 while 循环之前声明索引并将增量器添加到 while 循环的末尾。

      int endData = myScanner.nextInt();   
      int row     =   0;
      int cell    =   0;
      int rowcell =   0;
      
      
      System.out.println("FOR LOOP: ");
      row = 1;
      while(row <= endData) {
      
          if (row%2 == 0) {
              cell = 0;
              while (cell < row) {
                  rowcell = 0;
                  while (rowcell <= cell) {
                      System.out.print(row);
                      rowcell++;
                  }
                      System.out.println("");
                   cell++;
              }
              row++;
          }
      
           else {
              cell = row;
              while (cell > 0;) {
                  for (rowcell = cell; rowcell > 0; rowcell--) {
                      System.out.print(row);  
                      cell--;
                  }
                      System.out.println("");
              }
      
          }
      
      }
      

      【讨论】:

        猜你喜欢
        • 2021-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-14
        • 2018-02-22
        • 2017-04-26
        • 2018-08-19
        相关资源
        最近更新 更多