Генерация случайных чисел 1-12 без нуля?

1

Надеюсь, название объясняет, чего я хочу. Я хочу набор чисел 1-12 в случайном порядке, но не получить нулевой результат.

Вот мой код:

Integer[] arr = new Integer[12];

    for(int i = 1; i < arr.length; i++)
    {
        arr[i] = i+1; //With this not being i+1, I get 0-11. Like this, I get null-12 and no 1.

        if (arr[i] ==  null)
        {
            arr[i] = 1;
        }
    }

    Collections.shuffle(Arrays.asList(arr));
    System.out.println(Arrays.asList(arr));

И вот что я получаю как результат:

[null, 5, 3, 10, 7, 2, 9, 4, 6, 12, 8, 11]

Как я могу преобразовать значение null, потому что оператор if if ничего не делает?

  • 0
    Индексы массива начинаются с 0! И вы никогда не устанавливаете элемент 0 ...
Теги:
arrays
null
random

5 ответов

3
Лучший ответ

Вы не инициализируете первый элемент в вашем массиве. Начните с я = 0 в вашем цикле, например:

for(int i = 0; i < arr.length; i++)
1

Arrays основаны на 0 based, поэтому первые элементы должны начинаться с индекса 0, а не 1

Поэтому попробуйте изменить свой код:

 for(int i = 0; i < arr.length; i++)

для получения более подробной информации о массивах.

1

запустите цикл for 0

for(int i = 0; i < arr.length; i++)
1

Начните с 0 вместо 1

for(int i = 0; i < arr.length; i++)
  • 0
    Упс. Должно быть, я случайно попробовал 2 способа получения 1-12 и забыл удалить первый. Благодарю.
1

Вы инициализируете переменную цикла я до 1, в результате массив arr [0] никогда не получает значение, которое по умолчанию равно null. Ваш цикл должен быть для (int я = 0; я <arr.length; i++)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню