一、问题描述
注:六个红色球号码均不同,蓝色球号码可以红色球号码相同;
二、设计思路
(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)在写代码前,先对问题进行分析,分成若干个小块,再逐一编写代码,完成任务;
标签:双色球,java,号码,int,arr,System,彩票,number,out From: https://www.cnblogs.com/lian369/p/17526993.html