为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

冯宝宝 2017-09-25 22:26:07
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 行。

查看完整回答
1 反对 回复 2017-09-26
  • 2 回答
  • 0 关注
  • 1853 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信