Java语言编写一个简单彩票机的程序

运行示例:

代码实现:

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

}

 

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

N._

piu~打个赏吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值