彩票程序陷入死循环

Lottery program is stuck in an infinite loop

我正在创建一个彩票程序,我使用了我创建的一组 class 而不是 java 组。

这是我的套装class;它具有 Java set

的基本功能
import java.util.*;

public class mySet<T>
{
    private Set<T> yourSet=new HashSet<T>();
    T number;
    mySet()
    {
    }

    private mySet(Set<T> yourSet)
    {
        this.yourSet=yourSet;
    }

    public void print()
    {
        if(isEmpty())
            System.out.println("Your set is empty");
        else
            System.out.println(yourSet);
    }
    //public
    public void addToSet(T number)
    {
        this.number=number;
        yourSet.add(number);
    }
    public boolean isEmpty()
    {
        return (yourSet==null);

    }

    public int getCardinality()
    {
        int size=0;
        size=yourSet.size();
        return(size);
    }

    public void clear()
    {
        yourSet.clear();
    }

    public boolean isInSet(int value)
    {
        if(isEmpty())
        {
            System.out.println("The set is empty");
        }
        else
        {
            yourSet.contains(value);
            return true;
        }
        return false;

    }

    public mySet <T>intersection(mySet<T> setb)
    {
        Set<T> newSet=new HashSet<>(yourSet);
        newSet.retainAll(setb.yourSet);
        return new mySet<>(newSet);
    }
}

这是获取并验证用户输入的程序

public mySet userLottery(mySet userStore){
    
    for (int x=0;x<6;x++)
    {
        int user=getUser("Please enter your lottery number : ");

        if(userStore.isInSet(user) )// checks if the number entered by the user have been entered before
        {
            x--;
            System.out.println("No duplicates are allowed");
            continue;
        }
        else if (user>=LOTTERY_MAX )// checks if the user entered a number that is higher than the Lottery max
        {
            x--;
            System.out.println("The value you entered must be lower than the limit "+"("+LOTTERY_MAX+")");
            continue;
        }
        else if (user<1 )//prevents the user from entering a number less than 1
        {
            x--;
            System.out.println("The value you entered must be greater than 0");
            continue;
        }

        else
        {
            userStore.addToSet(user);// adds the users input to the Set if it meets all conditions

        }
    }

    System.out.println("this is the users input : "+userStore);//prints out the users input
    return userStore;
}

LOTTERY_MAX为开奖号码的最大范围,用户选择范围。

当我 运行 程序和输入数字时,它打印出不允许重复的内容,并且不知何故陷入了无限循环。我尝试从一开始就清除设置,但同样的问题仍然存在。当我删除 if 语句时,程序 运行s 按预期运行,但是没有任何东西可以验证用户的输入。该程序的目的是将用户输入放入一个集合中,然后将其与一组计算机生成的数字进行交叉检查。

public boolean isEmpty()
{
    return (yourSet==null);

}

这不是您检查集合是否为空的方式。这就是您想要的方式:

public boolean isEmpty()
{
    return (yourSet==null || yourSet.isEmpty());

}

编辑:我不明白你为什么要包装 HashSet 而不是直接使用它。如果你这样做,你会避免很多问题。那些 类 存在是有原因的。学会正确使用它们。