簡體   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