@turdubekov
Студент

Как заполнить массив от 275 до 834?

1. Есть массив: int[] array = new int[15];
2. Дано генератор случайных чисел: int value = random.nextInt(275)+ 559;
вопрос: Как заполнить массив целыми значениями, лежащими в диапазоне от 275 до 834 включительно?

p.s что я натворил:
Random random = new Random();
        int value = random.nextInt(275)+ 559;
        int[] arrays = new int[15];
        while (arrays.length != value){
            arrays+value;
        }

    }
  • Вопрос задан
  • 1453 просмотра
Решения вопроса 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
int[] array = new Random().ints(15, 275, 834).toArray();
Ответ написан
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Что не так с этим кодом:
Random random = new Random();
        int value = random.nextInt(275)+ 559;
        int[] arrays = new int[15];
        while (arrays.length != value){
            arrays+value;
        }

    }

Во-первых,
while (arrays.length != value)
Пока длина массива не будет равной значению рандомного числа... Это даже простыми словами звучит нелогично
Во-вторых,
int value = random.nextInt(275)+ 559;
Элементу массива всегда будет присваиватся одно и то же значение. Надо его внутрь цикла перетащить.

Первый вариант, в случае если у вас рандом задан именно так:
int value = random.nextInt(275)+ 559;
public class Main {

    public static void main(String[] args) {
        int[] array = new int[15];
        Random random = new Random();
        for (int i = 0; i < array.length; i++) {
            array[i] = random.nextInt(275) + 559;
        }
        Arrays.stream(array).forEach(System.out::println);
    }

}


Второй вариант:
public class Main {

    public static void main(String[] args) {
        int[] array = new int[15];
        for (int i = 0; i < array.length; i++) {
            array[i] = getRandomNumber(275, 834);
        }
        Arrays.stream(array).forEach(System.out::println);
    }
    
    public static int getRandomNumber(int min, int max) {
        return (int) ((Math.random() * (max - min)) + min);
    }
}


Третий вариант:
public class Main {

    public static void main(String[] args) {
        int[] array = new int[15];
        for (int i = 0; i < array.length; i++) {
            array[i] = ThreadLocalRandom.current().nextInt(275, 834 + 1);
        }
        Arrays.stream(array).forEach(System.out::println);
    }
    
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
while (arrays.length != value)

Зачем вы сравниваете длину массиву (всегда 15) с рандомным числом (275-834)? Условие никогда не будет false и вы никогда не выйдете из цикла
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы