模拟双色球彩票系统(java)

发布时间 2023-07-04 21:07:59作者: 我爱软工

一、问题描述

 注:六个红色球号码均不同,蓝色球号码可以红色球号码相同;

二、设计思路

(1)先随机出一个中奖号码,依据这个号码对后续进行颁奖;

(2)再从用户端接收对应的6个红色球号码以及1个蓝色球号码;

(3)将中奖号码与用户号码进行对比,得出对应的中奖结果;

ps:”如何得到不重复的随机数“值得学习一下;

三、代码 

 

  1 import java.util.Random;
  2 import java.util.Scanner;
  3 
  4 public class shuangseqiu {
  5     public static void main(String[] args) {
  6         //投注号码由六个红色球号码和一个蓝色球号码组成。红色球号码从1-33,蓝色球号码从1-16
  7         //1.需要随机生成一个大奖号码   不重复
  8         int[] arr = getRandom();
  9         System.out.println("--------------");
 10         for (int i = 0; i < arr.length; i++) {
 11 
 12             System.out.print(arr[i] + " ");
 13         }
 14         System.out.println("");
 15         System.out.println("--------------");
 16 
 17         //2.用户输入自己选择的号码
 18         int[] newArr = yonghu();
 19         //3.判断该情况下用户是否中奖
 20         int redCount=0,blueCount=0;
 21         for(int i=0;i<arr.length-1;i++){
 22             for(int j=0;j< newArr.length-1;j++){
 23                 if(arr[i]==newArr[j]){
 24                     redCount++;
 25                     break;
 26                 }
 27             }
 28         }
 29         if(arr[arr.length-1]==newArr[newArr.length-1]){
 30             blueCount++;
 31         }
 32         //对每种对应的得奖情况进行输出
 33         if(redCount==6&&blueCount==1){
 34             System.out.println("恭喜您中奖1000万");
 35         }
 36         else if(redCount==6&&blueCount==0){
 37             System.out.println("恭喜您中奖500万");
 38         }
 39         else if(redCount==5&&blueCount==1){
 40             System.out.println("恭喜您中奖3000元");
 41         }
 42         else if((redCount==5&&blueCount==0)||(redCount==4&&blueCount==1)){
 43             System.out.println("恭喜您中奖200元");
 44         }
 45         else if((redCount==4&&blueCount==0)||(redCount==3&&blueCount==1)||(redCount==2&&blueCount==1)){
 46             System.out.println("恭喜您中奖10元");
 47         }
 48         else if((redCount==1&&blueCount==1)||(redCount==0&&blueCount==1)){
 49             System.out.println("恭喜您中奖5元");
 50         }
 51         else{
 52             System.out.println("谢谢参与");
 53         }
 54     }
 55 
 56     public static int[] getRandom() {
 57         //此方法功能是生成一个大奖号码
 58         Random r = new Random();
 59         int[] arr = new int[7];
 60         //生成随机的六个红球号码
 61         for (int i = 0; i < arr.length; ) {
 62             int redNumber = r.nextInt(33) + 1;
 63             if (!contain(arr, redNumber)) {
 64                 arr[i] = redNumber;
 65                 i++;
 66             }
 67         }
 68         //生成随机一个蓝球号码
 69         int blueNumber = r.nextInt(16) + 1;
 70         arr[arr.length - 1] = blueNumber;
 71         return arr;
 72 
 73     }
 74 
 75     public static boolean contain(int[] arr, int number) {
 76         for (int i = 0; i < arr.length; i++) {
 77             if (number == arr[i]) {
 78                 return true;
 79             }
 80         }
 81         return false;
 82     }  //用来得到不重复的数据,并存到数组中
 83 
 84     public static int[] yonghu() {
 85         Scanner sc = new Scanner(System.in);
 86         int[] arr = new int[7];
 87         for (int i = 0; i < arr.length - 1; ) {
 88             System.out.println("请输入第" + (i + 1) + "个红球号码");
 89             int number = sc.nextInt();
 90             if (number >= 1 && number <= 33) {
 91                 if (!contain(arr, number)) {
 92                     arr[i] = number;
 93                     i++;
 94                 } else {
 95                     System.out.println("号码重复,请重新输入第" + (i + 1) + "个红球号码");
 96                 }
 97             } else {
 98                 System.out.println("号码超出范围,请重新输入");
 99             }
100 
101         }
102         System.out.println("请输入一个蓝球号码");
103         while (true) {
104             int blue = sc.nextInt();
105             if (blue >= 1 && blue <= 16) {
106                 arr[arr.length - 1] = blue;
107                 break;
108             } else {
109                 System.out.println("号码有误,请重新输入蓝球号码");
110             }
111         }
112         return arr;
113     }
114 }

 

四、总结

(1)熟练运用方法,提高代码的复用率;

(2)当方法的范围值为数组时,不需要加方括号[];

(3)idea在运行时,如果遇到永远不会执行的代码时,会报错;   例如在死循环后面的代码永远不会执行,就会报错;

(4)在写代码前,先对问题进行分析,分成若干个小块,再逐一编写代码,完成任务;