猿问

急求:for循环问题,想知道里面是怎么操作的,debug不会调

float[][] arry = new float[5][6];

Random rand = new Random();

for (int i = 0; i < 5; i++) {

float[] line = arry[i];

for (int j = 0; j < 6; j++) {

float temp = (float) Math.round(rand.nextFloat() * 600 + 400) / 10;//

arry[i][j] = temp;


System.out.print(line[j] + ",");

System.out.print("\t");

}

System.out.println();

}

这是二维数组,每隔6个换行输出,这个换行输出是百度滴,我不太明白,这个循环操作,第一个for循环开始,把arry值给了一维数组Line然后第二个for循环输出line里的值,i的最大下标只有5,我的理解是line里最多只有5个元素,为什么最后输出了那么多呢,这个循环是怎么操作的,求解。紧急求啊!!!明天可能抽人讲解。

冯宝宝
浏览 1884回答 2
2回答

onemoo

如果我用“行”和“列”来描述这个 arry数组的话, 它是有 5 行 6 列。第一个 for 循环是沿着行来循环的,也就是每次循环得到其中一行。因为 arry 有 6 列,所以一行就是有 6 个元素的数组。 那么 arry[i] 就是指第 i 行,也就是 line。所以 line 里是 6 个元素。  你这里理解错了!这个代码的逻辑是:第一个循环负责处理每一行。在循环中先把这一行赋值给数组 line,这是为了在后面可以方便地通过 line 来访问这一行的每一个元素。第二个循环依次访问行中的每一个元素。先给元素赋予随机值,再打印"这个元素 + , + \t"。你看它给元素赋值时写的是 arry[i][j] = temp,其实这里完全可以写成 line[j] = temp。想得明白吗? 因为 line 就是当时的 arry[i] 这一行,既然前面已经用 line 表示这一行了,所以用 line[j] 自然就是这一行的 j 元素,也就是 arry[i][j]。在下面打印元素值时它用的就是 line[j],同理这里也可以用 arry[i][j]。吐槽:这个代码在表示当前元素时一会儿用 line[j],一会儿用 arry[i][j],这很乱啊。其实它完全没有必要用到 line,就只用 arry[i][j] 表示元素不是很清楚吗!在处理完一行的所有 6 个元素之后,就打印换行。然后回到第一个 for 循环中再处理下一行...直到处理完全部 5 行。
随时随地看视频慕课网APP

相关分类

Java
我要回答