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

我在随机 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。


任何人都可以帮忙吗?


慕莱坞森
浏览 129回答 2
2回答

阿波罗的战车

看起来您在每次迭代时都对整个数组进行排序。设置值后尝试对数组进行排序和打印。public class test {&nbsp; &nbsp; public static void main(String[] args) {&nbsp; &nbsp; &nbsp; &nbsp; int[] list = new int[10];&nbsp; &nbsp; &nbsp; &nbsp; Random rand = new Random();&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; for (int i = 0; i < list.length; i++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; list[i] = rand.nextInt(100);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Arrays.sort(list);&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; for (int i = 0; i < list.length; i++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(list[i]);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;&nbsp; &nbsp; }}如果你调试你的应用程序,你就会明白为什么每次都会得到 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)

慕的地6264312

问题是您在用随机数填充数组时对数组进行排序。这不起作用的原因是因为 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) {&nbsp; &nbsp; int[] list = new int[10];&nbsp; &nbsp; Random rand = new Random();&nbsp;&nbsp; &nbsp; for (int i = 0; i < list.length; i++) {&nbsp; &nbsp; &nbsp; &nbsp; list[i] = rand.nextInt(100);&nbsp; &nbsp; }&nbsp;&nbsp;&nbsp; &nbsp; Arrays.sort(list);&nbsp;&nbsp; &nbsp; System.out.println(Arrays.toString(list));}}希望这有帮助!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java