已有258人关注
数组问题?
发表在Java答疑区 2017-06-14
是否精华
版块置顶:

import java.util.*;


public class Swap {

public static void main(String[] args) {

int a[] = new int[5];

Arrays.fill(a, 8);

for (int i = 0; i < a.length; i++) {

System.out.print(a[i] + "  ");


}


System.out.println();

for (int i = 0; i < a.length; i++) {

Arrays.fill(a, a.length - i);

System.out.print(a[i] + "  ");


}


Arrays.sort(a);

System.out.println();

for (int j = 0; j < a.length; j++) {

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

}

}

}

输出:

8  8  8  8  8  

5  4  3  2  1  

1  1  1  1  1 

排序之后再输出,怎么变成1  1  1  1  1 了

我觉得应该是:1  2  3  4  5

2017-06-14 23:00:28编辑
分享到:
精彩评论 3
David
学分:914 LV7
TA的每日心情
最后的冲刺
2017-07-15 10:46:08
2017-06-15
沙发

问题出在这里:

QQ截图20170615164135.png

读者的想法是,依次向数组添加5、4、3、2、1,且输出也是5、4、3、2、1。表面上看,合情合理,但是Arrays.fill(int[] a, int val)方法的作用是把val分配给数组a的每个元素。当i = 4时,就有Arrays.fill(a, 1),也就是说,执行完这条语句后,数组a中的元素都是1,不论是否排序,结果都是一样。

chenbaojunjava
学分:58 LV3
2017-06-16
板凳

David 发表于2017-06-15 16:49

问题出在这里:

QQ截图20170615164135.png

读者的想法是,依次向数组添加5、4、3、2、1,且输出也是5、4、3、2、1。表面上看,合情合理,但是Arrays.fill(int[] a, int val)方法的作用是把val分配给数组a的每个元素。当i = 4时,就有Arrays.fill(a, 1),也就是说,执行完这条语句后,数组a中的元素都是1,不论是否排序,结果都是一样。

有点绕,不过还是看明白了5,4,3,2,1这排的输出并不是一个数组,而是数组{5,5,5,5,5},{4,4,4,4,4,},{3,3,3,3,3},{2,2,2,2,2,},{1,1,1,1,1}中每次循 各数组中下标为i的元素值。

而排序的是循环i=4 时 产生的数组{1,1,1,1,1}

老师,这样理解 应该没问题吧。

David
学分:914 LV7
TA的每日心情
最后的冲刺
2017-07-15 10:46:08
2017-06-16
地板

是的,读者的理解是正确的。

首页上一页 1 下一页尾页 3 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照