该代码未编译,出了什么问题(Java)

时间:2020-05-28 09:40:32

标签: java

它应该返回一组6个不同的整数。预先感谢您的帮助

p.s。我是这里的新手,如果我以错误的方式提出问题,我表示歉意。

代码:

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 :(得分:0)

使用循环代替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);

答案 1 :(得分:0)

写这样的东西:-

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);
       } }

答案 2 :(得分:0)

您正在使用if条件并期望执行循环操作。 if条件仅检查一次,它将根据语句true或false操作提供输出。

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

您可以略微更改逻辑以匹配所需。

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

现在已经形成了循环,但是您又缺少了一些东西。随机数生成应该进入循环内部,否则每次都将是相同的随机数变量,并且HashSet将一次又一次替换相同的值,然后您将得到一个无限循环。

所以您需要像这样在while循环中添加随机数生成。

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

现在,您不需要在上面定义随机数变量,因为您总是在添加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) {
相关问题