Этот код не компилируется, в чем проблема (Java) - PullRequest
0 голосов
/ 28 мая 2020

Он должен вернуть Набор из 6 различных целых чисел. Заранее спасибо за помощь

ps Я новичок ie здесь, так что прошу прощения, если я задаю вопрос неправильно.

Код:

package net.javavideotutorials.assignment1;
import java.util.Set;
import java.util.Random;

public class LotteryNumberGenerator {
    public static void main( String args[] ) {
        Random rand = new Random();
        int upperbound = 100;
        int int_random = rand.nextInt(upperbound);       

        Set<Integer> a = new HashSet<Integer>();

        if (a.size() <= 6) {
            a.add(int_random);
        } else {
            System.out.println(a);
        }

Ответы [ 3 ]

0 голосов
/ 28 мая 2020

Напишите примерно так: -

public class LotteryNumberGenerator {
    public static void main( String args[] ) {
        Random rand = new Random();
        int upperbound = 100;
        int int_random = rand.nextInt(upperbound);       

        Set<Integer> a = new HashSet<Integer>();

        for(int i = 1 ; i <= 6 ; i++) {
        a.add(int_random);
         }
        System.out.println(a);
       } }
0 голосов
/ 28 мая 2020

Вы используете условие if и ожидаете операцию al oop. if условие проверяется только один раз, и оно предоставит результат в соответствии с оператором true или false.

if (a.size() <= 6) {
    a.add(int_random);
} else {
    System.out.println(a);
}

вы можете немного изменить logi c в соответствии с тем, что вам нужно.

while (a.size() <= 6) {
    a.add(int_random);
}
System.out.println(a);

Теперь l oop сформировался, но вам снова чего-то не хватает. Генерация случайных чисел должна происходить внутри l oop, иначе это будет одна и та же переменная случайного числа каждый раз, и HashSet будет заменять одно и то же значение снова и снова, тогда вы получите бесконечное l oop.

поэтому вам нужно добавить генерацию случайных чисел внутри while l oop вот так.

while (a.size() <= 6) {
    int_random = rand.nextInt(upperbound);
    a.add(int_random);
}
System.out.println(a);

Теперь вам не нужно определять переменную случайного числа выше, потому что вы всегда генерируете внутри l oop перед добавлением HashSet.

Это полный код.

public class LotteryNumberGenerator {
    public static void main(String args[]) {
        Random rand = new Random();
        int upperbound = 100;

        Set<Integer> a = new HashSet<Integer>();

        while (a.size() <= 6) {
            int int_random = rand.nextInt(upperbound);
            a.add(int_random);
        }
        System.out.println(a);
    }
}

если вы хотите установить только 6 чисел, измените условие, подобное этому. <= следует изменить на <

while (a.size() < 6) {
0 голосов
/ 28 мая 2020

Используйте циклы вместо условия if. Используйте этот код.

IntStream.rangeClosed(1, 6).forEach(i -> a.add(rand.nextInt(upperbound)));

Полный код:

 Random rand = new Random();
    int upperbound = 100;
    int int_random = rand.nextInt(upperbound);
    Set<Integer> a = new HashSet<Integer>();
    IntStream.rangeClosed(1, 6).forEach(i -> a.add(rand.nextInt(upperbound)));
    System.out.println(a);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...