所以基本上我正在使用两个树集编写一个彩票程序,每个树集有6个整数,一个用户输入,另一个随机生成。我必须将这些数字相互比较才能输出奖品,例如,如果要匹配两个数字,那么您将赢得100美元。我在如何创建这样的方法时遇到了麻烦。任何帮助都会非常感谢!
这是我的主要内容,
public static void main(String[] args)
{
Set<Integer>s1 = createWinningNumber();
Set<Integer>s2 = getUserNumber();
System.out.println("Your ticket was: "+s2);
System.out.println("Winning numbers: "+s1);
}//End of main
public static Set<Integer> getUserNumber()
{
int set = 0;
Set<Integer> number = new TreeSet<Integer>();
Scanner keyboard = new Scanner(System.in);
System.out.println("Pick your Lucky Lotto Numbers");
System.out.print("Type 6 lotto numbers: ");
for(int i = 0; i< 6;i++)
{
System.out.print("");
set = keyboard.nextInt();
number.add(set);
}
return number;
}//End of getUserNumber
public static Set<Integer> createWinningNumber()
{
Set<Integer> winning = new TreeSet<Integer>();
Random generator = new Random();
for(int i = 0;i<6;i++)
{
winning.add(generator.nextInt(40));
}
return winning;
}//End of createWinningNumber
到目前为止的输出
Pick your Lucky Lotto Numbers
Type 6 lotto numbers: 4 12 7 35 20 1
Your ticket was: [1, 4, 7, 12, 20, 35]
Winning numbers: [5, 8, 19, 24, 32]
答案 0 :(得分:2)
Set
是要走的路。不错的选择。
您正在寻找的操作是两组的交叉点。在Java中,这实现为:
s1.retainAll(s2);
s1
现在只包含<{1}}中 的元素。
然后,您可以使用s2
来计算公共号码的数量:
s1.size()
编辑:如果您想保留原始设置,请尝试以下操作:
public static void main(String[] args)
{
Set<Integer>s1 = createWinningNumber();
Set<Integer>s2 = getUserNumber();
System.out.println("Your ticket was: "+s2);
System.out.println("Winning numbers: "+s1);
s1.retainAll(s2); // s1 contains the intersection of previous s1 and s2
System.out.println("You had " + s1.size() +
" numbers in common with the winning number.");
}
答案 1 :(得分:1)
您可以使用Set.containsAll(Collection)
link to API来检查另一组中是否包含一组。然后你可以检查尺寸匹配,如果是,你有一个赢家:
s1.containsAll(s2) && s2.size().equals(s1.size())
或者你可以这样做:
s1.containsAll(s2) && s2.containsAll(s1)
检查这两个集是否是彼此的子集(因此只包含相同的元素)。如果你需要知道有多少匹配,那么你可以做WChargin所说的。我可能会创建一个包含公共数字的新集合,例如:
Set<Integer> commonNumbers = new TreeSet<Integer>(s1);
commonNumbers.retainAll(s2);
这样我就不会修改原始的s1
集合。
答案 2 :(得分:0)
这是一个便宜的分辨率
public static void main(String[] args) {
Set<Integer> wins = new HashSet<Integer>();
Set<Integer> winners = createWinningNumber();
Set<Integer> numbers = getUserNumber();
for(Integer winner : winners) {
for(Integer number : numbers) {
if(winner == number) {
wins.add(number);
}
}
}
System.out.println("Your ticket was: " + numbers);
System.out.println("Winning numbers: " + winners);
System.out.println("Your Winning numbers: " + wins);
}