我对嵌套循环变体感到困惑。这些循环以某种方式给出了相同的结果,但是我无法将其包裹住。例如,在第二个代码中,它说的是col <values [rows]的部分,values [rows] = 4(因为有4行)吗?因此,我只是想知道这些循环如何相互作用,哪个循环首先执行并首先完成?
for (int row = 0; row < 4; row++)
{
for (int col = 0; col < 3; col++)
{
System.out.print(values[row][col] + " ");
}
System.out.println();
}
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();
}
问题来源:Stack Overflow
我不确定您要在这里问什么,但我想您只是想知道这两个代码块之间的区别。
我将通过一个简单的示例向您解释:
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();
}
}
}
输入:
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
因此,如您所见,如果values.length = 4和values [row] .length = 3,则第一个块的工作原理与第二个块完全相同,否则它们将给出不同的结果。遍历数组的一个好习惯是使用array.length而不是硬编码length的值。
回答来源:Stack Overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。