双色球买彩票系统

双色球买彩票系统

购买彩票

  1. 输入下注数,计算需要支付多少元

  2. 输入6个红色球号码

  3. 输入1个蓝色球号码

  4. 输出一共购买了多少注,共需支付多少元

查看开奖

  1. 生成开奖号码(随机数)

  2. 列举已买彩票号和当期中奖号

  3. 对比开奖号码和购买号码,输出对应的中奖信息

项目需求

双色球投注区分为红色球号码区和蓝色球号码区,

红色球号码区由1-33共33个号码组成,蓝色球号码区由1-16共16个号码组成。

投注时选择6个红球号码和1个蓝球号码组成一注进行单式投注,每注金额2元。

一等奖:投注号码与当期开奖号码全部相同(顺序不限,下同),即中奖,奖金为500倍;

二等奖:投注号码与当期开奖号码中的6个红色球号码相同,即中奖,奖金为400倍;

三等奖:投注号码与当期开奖号码中的任意5个红色球号码和1个蓝色球号码相同,即中奖,奖金为300倍;

四等奖:投注号码与当期开奖号码中的任意5个红色球号码相同,或与任意4个红色球号码和1个蓝色球号码相同,即中奖,奖金为200倍;

五等奖:投注号码与当期开奖号码中的任意4个红色球号码相同,或与任意3个红色球号码和1个蓝色球号码相同,即中奖,奖金为100倍;

六等奖:投注号码与当期开奖号码中的1个蓝色球号码相同,即中奖,奖金为5倍。

显示中奖结果的同时显示您一共下注人民币??元,累计中奖人民币??元

代码编写

package com.zll;

import java.util.Scanner;

public class Tickets {
   public static void main(String[] args) {
       Scanner sc=new Scanner(System.in);
       int[][] allBall={{0,0,0,0,0,0},{0}};//保存球号元素,二维数组的下标0用来保存红色球号的一维数组,二维数组的下标1用来保存蓝色球号的一维数组
       int money=0;//下注钱
       while(true){
           System.out.println("********欢迎进入双色球彩票系统*******");
           System.out.println("\t\t1.购买彩票");
           System.out.println("\t\t2.查看开奖");
           System.out.println("\t\t3.退出");
           System.out.println("**********************************");
           System.out.println("请选择菜单:");
           int selectMenu=sc.nextInt();
           switch(selectMenu){
               case 1:
                   System.out.println("双色球彩票系统 > 购买彩票");
                   System.out.print("您需要下多少注?");
                   money=sc.nextInt();
                  buyTicket(money,allBall);//买彩票方法,传入下注钱和用来保存球号元素
                   break;
               case 2:
                   System.out.println("双色球彩票系统 > 查看开奖");
                   int result=openTicket(allBall,money);//开奖方法,返回获奖钱数
                   if(result==-1){
                       System.out.println("【望在接再励】");
                  }else{
                       System.out.println("您一共下注人民币【"+money+"】元,累计中奖人民币【"+result+"】元");
                  }
                   break;
               case 3:
                   System.out.println("退出成功");
                   return;
               default:
                   System.out.println("输入错误,请重新输入!");
                   break;
          }
      }

  }

   /**
    * 买彩票
    * @param money 下注钱
    * @param allBall 定义的保存球号元素的二维数组
    */
   public static void buyTicket(int money,int[][] allBall){
       Scanner sc=new Scanner(System.in);
       for (int i = 0; i < allBall.length; i++) {//这个是allball中的一维数字大小为2
           if(i==0){//i==0时说明是二维数组的第一个数组
               for (int j = 0; j < allBall[i].length; j++) {//进行循环二维数组的下标为0的一维数组
                   System.out.print("请输入6个红色球号(数字为1-33),第【"+(j+1)+"】个红色球号为:");
                   int num=sc.nextInt();
                   if(num>=1 && num<=33){
                       allBall[i][j]=num;
                  }else{
                       System.out.println("输入有误,请重新输入");
                       j--;//输入错误把元素退回前一个
                       continue;
                  }
              }
          }else{//表示i=1,二维数组的下标为1的数组元素
               for (int j = 0; j < allBall[i].length; j++) {
                   System.out.print("请输入1个蓝色球号(数字为1-16)");
                   int num=sc.nextInt();
                   if(num>=1 && num<=16){
                       allBall[i][j]=num;

                  }else {
                       System.out.println("输入有误,请重新输入");
                       j--;
                       continue;
                  }
              }

          }
      }

       System.out.println("您一共买了【"+money+"】注,共需支付【"+(money*2)+"】元,所选号为");
       for (int[] ints : allBall) {
           for (int anInt : ints) {
               System.out.print(anInt+"\t");
          }
      }
       System.out.println();
  }

   /**
    * 球号开奖
    * @param allBall 用户输入了的球号信息
    * @param money 下注钱
    * @return
    */
   public static int openTicket(int[][] allBall,int money){
       System.out.print("已买彩票号为:");
       for (int[] ints : allBall) {
           for (int anInt : ints) {
               System.out.print(anInt+"\t");
          }
      }
       System.out.println();
       System.out.print("当期中奖号为:");
       int[][] reward={{0,0,0,0,0,0},{0}};
       //使用随机数产生中奖号码
       for (int i = 0; i < reward.length; i++) {
           for (int j = 0; j < reward[i].length; j++) {
               if(i==0){
                   reward[i][j]=(int)(Math.random()*33+1);//使用了随机数产生
              }else{
                   reward[i][j]=(int)(Math.random()*16+1);
              }
          }
      }

       for (int[] ints : reward) {
           for (int anInt : ints) {
               System.out.print(anInt+"\t");
          }
      }


       int index=0;//这个是红色球的相同比较个数
       int blue=0;//蓝色球的
       //思路:比较用户输入的球号和程序随机产生的球号对比,主要是要对比红色球号的相同个数,因为是无序的所以使用for嵌套循环
       //因为是二维数组,所以我使用了最外层的两个for嵌套循环是分别控制用户输入的球号和程序产生的球号,if(i==0)是用来控制
       //两个不同二维数组的下标为0的一维数组(比较红色球号的相同的个数的),else是比较蓝色球号的
       for (int i = 0; i < allBall.length; i++) {
           for (int j = 0; j < reward.length; j++) {
               if(i==0){
                   for (int k = 0; k < allBall[i].length; k++) {
                       for (int l = 0; l < reward[j].length; l++) {
                           if(allBall[i][k]==reward[j][l]){
                               index++;
                               break;//定义一个break,只要用户输入的球号,与开奖号第一次遇到的匹配上就立马开始下一个循环数字
                          }
                      }
                  }
                   break;
              }else{
                   if(j==0){
                       if(allBall[i][j]==reward[i][j]){
                           blue++;
                      }
                  }
              }

          }
      }
       System.out.println();
       System.out.println("一共有"+index+"个红色球相同");
       System.out.println("蓝色球有"+blue+"个相同");
       if(index+blue==7){
           System.out.println("恭喜你中了一等奖,奖金为500倍");
           return money*500;
      }else if(index==6){
           System.out.println("恭喜你中了二等奖,奖金为400倍");
           return money*400;
      }else if(index==5 && blue==1){
           System.out.println("恭喜你中了三等奖,奖金为300倍");
           return money*300;
      }else if((index==5) || (index==4 && blue==1)){
           System.out.println("恭喜你中了四等奖,奖金为200倍");
           return money*200;
      }else if((index==4) || (index==3 && blue==1)){
           System.out.println("恭喜你中了五等奖,奖金为100倍");
           return money*100;
      }else if(blue==1){
           System.out.println("恭喜你中了六等奖,奖金为5倍");
           return money*5;
      }else{
           return -1;
      }

  }
}

运行截图

 

 

 

 

posted @ 2021-11-19 11:04  乐Malone  阅读(136)  评论(0)    收藏  举报