有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java数组。排序(arr)输出0而不是arr

我正在使用Java数组。对随机整数生成的数组进行排序

结果应该是一个排序数组,但我得到的是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

有人能帮忙吗


共 (2) 个答案

  1. # 1 楼答案

    看起来每次迭代都在对整个数组进行排序。尝试分类&;设置值后打印数组

    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]的数组,在打印之前对数组进行排序。所以,第一个5(list[0]list[1]list[2]…)将是0,而list[6]{}。。将是rand.nextInt(100)的结果

  2. # 2 楼答案

    问题是,在用随机数填充数组的同时对数组进行排序

    这不起作用的原因是,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));
    }
    

    }

    希望这有帮助