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