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个元素,为什么最后输出了那么多呢,这个循环是怎么操作的,求解。紧急求啊!!!明天可能抽人讲解。
2 回答
onemoo
TA贡献883条经验 获得超454个赞
如果我用“行”和“列”来描述这个 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 行。
添加回答
举报
0/150
提交
取消