java输出必须始终在输出上有6个数字

java输出必须始终在输出上有6个数字,java,Java,下面的代码将生成6个随机数,但在输出上它将显示4、5或6个数字。我需要一直有六个数字来进行评估。请有人指导我,我需要改变什么才能使输出一致。 谢谢 package net.javavideotutorials.assignment1; 导入java.util.HashSet; 导入java.util.Random; 导入java.util.Set; 公共类彩票号码生成器 { 公共静态void main(字符串[]args) { int容量=6; HashSet generateLotteryNu

下面的代码将生成6个随机数,但在输出上它将显示4、5或6个数字。我需要一直有六个数字来进行评估。请有人指导我,我需要改变什么才能使输出一致。 谢谢

package net.javavideotutorials.assignment1;
导入java.util.HashSet;
导入java.util.Random;
导入java.util.Set;
公共类彩票号码生成器
{
公共静态void main(字符串[]args)
{
int容量=6;
HashSet generateLotteryNumbers=新HashSet
(能力);
随机r=新随机();
做{
int next=r.nextInt(50);
如果(!generateLotteryNumbers.包含(r.nextInt(50)){
GenerateLotteryNumber.add(下一步);
容量--;
}
而(容量>0);
{
generateLotteryNumbers.stream().forEach(n-
>系统输出println(n));
}

几乎没有语法错误;do周围缺少花括号(您只关闭了if),末尾缺少大括号,->被分成两行

你也有一个;在if条件之后

我重新格式化了代码,使事情更清楚

public class LotteryNumberGenerator {
    public static <generateLotteryNumbers> void main(String[] args) {

        int capacity = 6;
        HashSet<Integer> generateLotteryNumbers = new HashSet<Integer>(capacity);
        Random r = new Random();

        do {
            int next = r.nextInt(50);
            if (!generateLotteryNumbers.contains(r.nextInt(50))) {
                generateLotteryNumbers.add(next);
                capacity--;

            }
        } while (capacity > 0);
        generateLotteryNumbers.stream().forEach(n -> System.out.println(n));
    }
}
正如AFSW指出的,另一种方法是使用add()方法的布尔返回

我的另一种选择是不要自己维护容量,只使用内置的size()方法

do {
    generateLotteryNumbers.add(r.nextInt(50));
} while (generateLotteryNumbers.size() < capacity);
do{
generateLotteryNumbers.add(r.nextInt(50));
}while(generateLotteryNumbers.size()<容量);

您在未关闭正确括号的情况下编写了while…您发布的内容无法编译。请发布您的实际代码。代码中有一个小问题。您创建了一个随机数
下一个
,但随后检查集
GenerateLotteryNumber
中是否包含另一个随机数。人们总是忘记这一点
add
返回一个布尔值…最明显的方法是编写
if(generateLotteryNumbers.add(r.nextInt(50)){capacity--;}
谢谢大家。我很抱歉sorted@Wim如果这个答案解决了你的问题,请考虑接受它。
int next = r.nextInt(50);
if (!generateLotteryNumbers.contains(next)) {
if (generateLotteryNumbers.add(r.nextInt(50))) {
    capacity--;
}
do {
    generateLotteryNumbers.add(r.nextInt(50));
} while (generateLotteryNumbers.size() < capacity);