【问题标题】:How to do this task with `while` loop?如何使用 `while` 循环执行此任务?
【发布时间】:2017-12-04 12:29:31
【问题描述】:

我不知道如何从 for-loop 转换为 while-loop 我所有的尝试都失败了。我有以下代码:

public static void main(String[] args) {
    int[][] arr = new int[4][];
    arr[0] = new int[4];
    arr[1] = new int[2];
    arr[2] = new int[1];
    arr[3] = new int[3];

int counter = 1;

如何将此 for 循环转换为 while 循环?

 //fill arr numbers from 1 to 10
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                arr[i][j] = counter++;
            }
        }

    for (int i = 0; i < arr.length; i++) {
            System.out.print(" arr [ " + i + " ] = ");
            for (int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println(" ");
        }

    }
}

输出:

arr [ 0 ] = 1 2 3 4  
arr [ 1 ] = 5 6  
arr [ 2 ] = 7 
arr [ 3 ] = 8 9 10

【问题讨论】:

  • 那会让你的代码变得丑陋。我猜

标签: java arrays for-loop while-loop


【解决方案1】:

for 循环基本上是编写while 循环的紧凑方式。

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

等同于:

int i=0;
while(i<arr.length){
  ....
  i++;

}

【讨论】:

    【解决方案2】:

    for 循环和while 循环只是语法不同。相当于for 循环:

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

    int i = 0;
    while(i < arr.length) {
        ...
        i++;
    }
    

    以下是您的代码,但带有 while 循环:

    public static void main(String[] args) {
        int[][] arr = new int[4][];
        arr[0] = new int[4];
        arr[1] = new int[2];
        arr[2] = new int[1];
        arr[3] = new int[3];
    
        int counter = 1;
        int i = 0, j = 0; // Initialize vars for while loops
    
        //fill arr numbers from 1 to 10     
        while(i<arr.length){
            while(j<arr[i].length){
                arr[i][j] = counter++;
                j++; // Increment as in for loops
            }
            i++; // Increment as in for loops
            j = 0; // Restart j to the next outer loop step
        } 
    
        i = 0; // Reset i for outer loop
        // No need to j=0 since when the above loop ends, j will reset to 0
    
        while(i<arr.length){
            System.out.print(" arr [ " + i + " ] = ");
            while(j<arr[i].length){
                System.out.print(arr[i][j] + " ");
                j++; // Increment as in for loops
            }
            i++; // Increment as in for loops
            j = 0; // Same objective as in the loop above
            System.out.println(" ");
        }
    }
    

    cmets中的解释,希望对你有帮助!

    【讨论】:

      【解决方案3】:
      while(int i <arr.length)
      {
         while(int j<arr[i].length)
         {
           arr[i][j] = counter++;
          j++;
         }
      i++;
      }
      
       while(int i <arr.length)
      {
         System.out.print(" arr [ " + i + " ] = ");
         while(int j<arr[i].length)
         {
           System.out.print(arr[i][j] + " ");
          j++;
         }
       System.out.println(" ");
      i++;
      }
      

      这可能会对你有所帮助。

      【讨论】:

        【解决方案4】:
        int i = 0;
        while ( i < arr.length ) {
        int j = 0;
            while ( j < arr[i].length;)
               {
                arr[i][j] = counter++;
               j++;
               }
        i++;
        }
        

        然后打印值

        int i = 0;
        while ( i < arr.length ) {
            System.out.print(" arr [ " + i + " ] = ");
            int j = 0;
            while ( j < arr[i].length) {
                System.out.print(arr[i][j] + " ");
             j++;
            }
            System.out.println(" ");
        i++;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多