Java array.sort (arr) выводит 0 вместо arr - PullRequest
0 голосов
/ 10 сентября 2018

Я использую Java array.sort в произвольном массиве, созданном int.

Результатом должен быть отсортированный массив, но вместо этого я получаю 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 ]

0 голосов
/ 10 сентября 2018

Проблема в том, что вы сортируете массив, заполняя его случайными числами.

Причина, по которой это не работает, заключается в том, что начальное значение элемента массива 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));
}

}

Надеюсь, это помогло!

0 голосов
/ 10 сентября 2018

Похоже, вы сортируете весь массив на каждой итерации. Попробуйте отсортировать и распечатать массив после установки значений.

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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...