运行示例:
代码实现:
ackage LinkedList_study;
import javax.swing.*;
import java.util.*;
public class Lottery {
public static final int NUMBERS = 6; // 彩票一共有六个数字
public static final int MAX_NUMBER = 40; // 彩票号码中最大数字为40
public static void main(String[] args){
// 获取中奖号码和用户输入号码的集合
Set<Integer> winningNumbers = createWinningnumbers();
Set<Integer> ticket = getTicket();
System.out.println();
// 求用户输入号码和中奖号码的交集
Set<Integer> intersection = new TreeSet<Integer>(ticket); // 参数为ticket,即intersection的初始值为ticke中的值
intersection.retainAll(winningNumbers); // 用集合中的retainAll方法计算交集
// 输出结果
System.out.println("您购买的号码为: " + ticket);
System.out.println("本期中奖号码为: " + winningNumbers);
System.out.println();
System.out.println("您有" + intersection.size() + "个号码中奖");
// 若中奖,计算奖金额度
if (intersection.size() > 0){
double prize = 100*Math.pow(2,intersection.size());
System.out.println("相同的号码为:" + intersection);
System.out.printf("您获得的奖金为$%.2f\n",prize);
}
}
// 产生一组随机的中奖号码
public static Set<Integer> createWinningnumbers(){
Set<Integer> winningNumbers = new TreeSet<Integer>(); // 用TreeSet类型—中奖号码中不能出现重复数字
Random r = new Random(); // 构建随机数生成器
while(winningNumbers.size() < NUMBERS){
int number = r.nextInt(MAX_NUMBER) + 1;
winningNumbers.add(number);
}
return winningNumbers;
}
// 获取用户输入的号码
public static Set<Integer> getTicket(){
Set<Integer> ticket = new TreeSet<Integer>();
Scanner console = new Scanner(System.in);
System.out.print("请输入" + NUMBERS + "个不大于40的不同号码:");
while (ticket.size() < NUMBERS){
int number = console.nextInt();
ticket.add(number);
}
return ticket;
}
}