模拟双色球彩票系统(java)
一、问题描述
注:六个红色球号码均不同,蓝色球号码可以红色球号码相同;
二、设计思路
(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)在写代码前,先对问题进行分析,分成若干个小块,再逐一编写代码,完成任务;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通