Java 哪个For循环将首先执行,然后首先完成?

Java 哪个For循环将首先执行,然后首先完成?,java,Java,我对嵌套循环变量感到困惑。不知何故,这些循环给出了相同的结果,但我不能把我的头绕在它周围。比如,在第二个代码中,它在col

我对嵌套循环变量感到困惑。不知何故,这些循环给出了相同的结果,但我不能把我的头绕在它周围。比如,在第二个代码中,它在col
 for (int row = 0; row < 4; row++)                                    
 {
    for (int col = 0; col < 3; col++)
    {
       System.out.print(values[row][col] + " ");
    }

    System.out.println();   
}

我不知道你想问什么,但我想你只是想知道这两段代码之间的区别

我将用一个简单的例子向您解释:

import java.util.*;
public class HelloWorld{

     public static void main(String []args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int[][]values = new int[n][m];
        for(int i=0; i<n;i++){
            for(int j=0; j<m; j++){                //read a 5 x 8 array
                values[i][j]= sc.nextInt();
            }
        }
        System.out.print("Input Array :");
        for(int i=0; i<n;i++){
            for(int j=0; j<m; j++){
                System.out.print(values[i][j] +" ");
            }
            System.out.println("");
        }
        System.out.print("First Code :");
        for (int row = 0; row < 4; row++)                                    
        {
             for (int col = 0; col < 3; col++)
             {
                  System.out.print(values[row][col] + " ");
             }
            System.out.println();   
        }
        System.out.print("Second Code :");    
        for (int row = 0; row < values.length; row++)
        {
            for (int col = 0; col < values[row].length; col++)
            {
                 System.out.print(values[row][col] + " ");
            }

            System.out.println();    
         }    
     }
}
程序的输出为:

Input Array :3 3 3 3 3 3 3 3 
4 4 4 4 4 4 4 4 
5 5 5 5 5 5 5 5 
6 6 6 6 6 6 6 6 
7 7 7 7 7 7 7 7 
First Code :3 3 3 
4 4 4 
5 5 5 
6 6 6 
Second Code :3 3 3 3 3 3 3 3 
4 4 4 4 4 4 4 4 
5 5 5 5 5 5 5 5 
6 6 6 6 6 6 6 6 
7 7 7 7 7 7 7 7 
所以,正如您所看到的,如果values.length=4和values[row].length=3,则第一个块的工作方式与第二个块的工作方式完全相同,否则它们将给出不同的结果。遍历数组的良好做法是使用array.length,而不是硬编码length的值。

在第一个循环中:

系统输出打印值[0][0]+

系统输出打印值[0][1]+

系统输出打印值[0][2]+

系统输出打印值[1][0]+

系统输出打印值[1][1]+

系统输出打印值[1][2]+


等等。。。。intern循环将运行4x,因为行的值=4。所以intern循环col循环的输出是4*3=12 System.out.print。了解了?Row*Col是您要查找的方程式。使用它来计算第二个代码。为了提供更多帮助,请显示values param中定义的值。

对于第一节中的For循环,您正在尝试遍历4 x 3数组。因此,对于每一行,它都会遍历指定的列数。它在最后一行的最后一列停止

对于第二节中的For循环,我认为当您不知道行和列的值时,它更合适


第一个完成取决于第二种情况下的行的长度,但固定在第一种情况下

非常不清楚您在问什么。这完全取决于二维数组的大小,以及它是否是。看:values.length='rowLength'==4,但是:values[row]。length='colLength'==3行的长度@Robby Cornelissen我有一个2D数组,有4行,每行3列,即3个值。在内部for循环的第一个代码中,它是col<3;在内部for循环的第二个代码中,它是col5 8 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7
Input Array :3 3 3 3 3 3 3 3 
4 4 4 4 4 4 4 4 
5 5 5 5 5 5 5 5 
6 6 6 6 6 6 6 6 
7 7 7 7 7 7 7 7 
First Code :3 3 3 
4 4 4 
5 5 5 
6 6 6 
Second Code :3 3 3 3 3 3 3 3 
4 4 4 4 4 4 4 4 
5 5 5 5 5 5 5 5 
6 6 6 6 6 6 6 6 
7 7 7 7 7 7 7 7