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

Java array.sort(arr)输出0而不是arr,java,arrays,sorting,array-algorithms,Java,Arrays,Sorting,Array Algorithms,我在一个随机整数生成的数组上使用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;

我在一个随机整数生成的数组上使用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]);
        }  
    }
}
公共类测试{
公共静态void main(字符串[]args){
int[]列表=新int[10];
Random rand=新的Random();
for(int i=0;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]);
        } 
    }
}
公共类测试{
公共静态void main(字符串[]args){
int[]列表=新int[10];
Random rand=新的Random();
for(int i=0;i
如果您调试您的应用程序,您可以看到为什么每次都得到5个0


int[]list=newint[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));
}
公共类测试{
公共静态void main(字符串[]args){
int[]列表=新int[10];
Random rand=新的Random();
for(int i=0;i
}


希望这有帮助

您在每次迭代中对整个数组进行排序。您打印列表中的一个元素,而不是数组