繁体   English   中英

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

[英]Java array.sort(arr) output 0 instead of 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个随机整数的排序数组,但是intead总是将前5个数字设为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); 

        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)的结果

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

之所以不起作用,是因为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));
}

}

希望这对您有所帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM