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

Java array.sort(arr) 输出 0 而不是 arr

Java array.sort(arr) 输出 0 而不是 arr

慕莱坞森 2021-09-12 10:40:43
我在随机 int 生成的数组上使用 Java array.sort。结果应该是一个排序的数组,但我得到的是 0 和一些随机生成的数字。这是我的代码:public class test {    public static void main(String[] args) {        int[] list = new int[10];        Random rand = new Random();         for (int i = 0; i < list.length; i++) {            list[i] = rand.nextInt(100);            Arrays.sort(list);             System.out.println(list[i]);        }      }}预期输出应该是 10 个随机整数的排序数组,但总是将前 5 个数字设为 0。任何人都可以帮忙吗?
查看完整描述

2 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

看起来您在每次迭代时都对整个数组进行排序。设置值后尝试对数组进行排序和打印。


public class test {

    public static void main(String[] args) {

        int[] list = new int[10];

        Random rand = new Random(); 

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

            list[i] = rand.nextInt(100);

        }  


        Arrays.sort(list); 


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

            System.out.println(list[i]);

        } 

    }

}

如果你调试你的应用程序,你就会明白为什么每次都会得到 5 个 0。


int[] list = new int[10];生成 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 的数组,并在打印之前对数组进行排序。因此,前 5 个 ( list[0], list[1], list[2]...) 将是0,而list[6] list[7].. 将是rand.nextInt(100)


查看完整回答
反对 回复 2021-09-12
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

问题是您在用随机数填充数组时对数组进行排序。


这不起作用的原因是因为 int 数组元素的初始值为 0 并且您的数组在您第一次初始化时将如下所示:


[0, 0, 0, 0, 0, ...]

然后在循环的第一轮中,假设生成了 5 作为随机数,并且第一个元素被初始化为 5。数组现在看起来像这样:


[5, 0, 0, 0, 0, ...]

然后在循环继续之前对列表进行排序,这意味着第一个元素中的 5 被发送到列表的末尾,第一个元素被替换为 0,如下所示:


[0, 0, 0, ... 0, 5]

解决这个问题的方法是在用随机数填充数组后对数组进行排序,如下所示:


public class test {

public static void main(String[] args) {

    int[] list = new int[10];

    Random rand = new Random(); 

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

        list[i] = rand.nextInt(100);

    }  


    Arrays.sort(list); 

    System.out.println(Arrays.toString(list));

}

}


希望这有帮助!


查看完整回答
反对 回复 2021-09-12
  • 2 回答
  • 0 关注
  • 126 浏览

添加回答

举报

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