双色球
需求:
双色球投注区分为红色球号码区和蓝色球号码区,
红色球号码区由1-33共33个号码组成,蓝色球号码区由1-16共16个号码组成。
投注时选择6个红球号码和1个蓝球号码组成一注进行单式投注,每注金额2元。
一等奖:投注号码与当期开奖号码全部相同(顺序不限,下同),即中奖;
二等奖:投注号码与当期开奖号码中的6个红色球号码相同,即中奖;
三等奖:投注号码与当期开奖号码中的任意5个红色球号码和1个蓝色球号码相同,即中奖;
四等奖:投注号码与当期开奖号码中的任意5个红色球号码相同,或与任意4个红色球号码和1个蓝色球号码相同,即中奖;
五等奖:投注号码与当期开奖号码中的任意4个红色球号码相同,或与任意3个红色球号码和1个蓝色球号码相同,即中奖;
六等奖:投注号码与当期开奖号码中的1个蓝色球号码相同,即中奖。
显示中奖结果的同时显示您一共下注人民币??元,累计中奖人民币??元
1 /* 2 双色球投注区分为红色球号码区和蓝色球号码区, 3 红色球号码区由1-33共33个号码组成,蓝色球号码区由1-16共16个号码组成。 4 投注时选择6个红球号码和1个蓝球号码组成一注进行单式投注,每注金额2元。 5 6 一等奖:投注号码与当期开奖号码全部相同(顺序不限,下同),即中奖; 7 二等奖:投注号码与当期开奖号码中的6个红色球号码相同,即中奖; 8 三等奖:投注号码与当期开奖号码中的任意5个红色球号码和1个蓝色球号码相同,即中奖; 9 四等奖:投注号码与当期开奖号码中的任意5个红色球号码相同,或与任意4个红色球号码和1个蓝色球号码相同,即中奖; 10 五等奖:投注号码与当期开奖号码中的任意4个红色球号码相同,或与任意3个红色球号码和1个蓝色球号码相同,即中奖; 11 六等奖:投注号码与当期开奖号码中的1个蓝色球号码相同,即中奖。 12 显示中奖结果的同时显示您一共下注人民币??元,累计中奖人民币??元 13 */ 14 import java.util.Scanner; 15 public class Lottery { 16 public static void main(String[] args) { 17 //以二维数组的形式定义已购彩票变量 18 int[][] myLottery = new int[1000][7]; 19 20 //实现主菜单循环 21 do { 22 //输出系统界面 23 System.out.println("============欢迎进入双色球彩票系统============"); 24 System.out.println("\t\t1.购买彩票"); 25 System.out.println("\t\t2.查看开奖"); 26 System.out.println("\t\t3.退出系统"); 27 System.out.println("++++++++++++++++++++++++++++++++++++++++++++++"); 28 29 //获取菜单选择 30 Scanner sc = new Scanner(System.in); 31 int menu = sc.nextInt(); 32 33 //进入具体功能 34 switch (menu) { 35 case 1: 36 buyLottery(myLottery); 37 break; 38 case 2: 39 winLottery(myLottery); 40 break; 41 case 3: 42 return; 43 default: 44 System.out.println("输入有误"); 45 break; 46 } 47 }while (true); 48 } 49 50 //彩票购买流程 51 public static int[][] buyLottery(int[][] arr){ 52 //输出购买选择 53 Scanner sc = new Scanner(System.in); 54 System.out.println("+++++++++++++++++++++++++++++++"); 55 System.out.println("\t请选择购买方式:"); 56 System.out.println("\t1.自选"); 57 System.out.println("\t2.机选"); 58 System.out.println("+++++++++++++++++++++++++++++++"); 59 //获取选择 60 int a = sc.nextInt(); 61 switch (a) { 62 //自选号码购买 63 case 1: 64 //将新购买的彩票添加至二维数组最左侧的空位中 65 int h = 0; 66 for (h = 0;h <= arr.length ;h++) { 67 int[] tempLottery = new int[7]; 68 if (arr[h][0] == 0) { 69 arr[h] = buyOneLottery(tempLottery); 70 } 71 //实现循环购买 72 System.out.println("是否继续购买?(Y/N)"); 73 char b = sc.next().charAt(0); 74 while (b != 'y' && b != 'Y' &&b != 'n' &&b != 'N'){ 75 System.out.println("输入的信息有误,请重新输入"); 76 System.out.println("是否继续购买?(Y/N)"); 77 b = sc.next().charAt(0); 78 } 79 if (b == 'y' || b == 'Y'){ 80 continue; 81 }else { 82 break; 83 } 84 } 85 86 //输出购买结果 87 int num1 = h + 1; 88 int money1 = (h + 1) * 2; 89 System.out.println("您一共购买了" + num1 +"注彩票, 共花费" + money1 + "元, 彩票号码是:"); 90 printAllLottery(arr); 91 System.out.println(); 92 backToMenu('a'); 93 break; 94 //机选号码购买 95 case 2: 96 System.out.println("请输入您想购买的彩票数量(最多100注):"); 97 //获取想要购买的机选彩票数量 98 int numberOfLottery = sc.nextInt(); 99 //获取已经购买的彩票数量 100 int numberOfLotteryBought = 0; 101 while (arr[numberOfLotteryBought][0] != 0) { 102 numberOfLotteryBought++; 103 } 104 //添加机选彩票到已买彩票 105 for (int m = numberOfLotteryBought;m < numberOfLotteryBought + numberOfLottery ;m++) { 106 int[] tempLottery = new int[7]; 107 arr[m] = getRandomLottery(tempLottery); 108 } 109 //打印所有已购彩票 110 int num2 = numberOfLotteryBought + numberOfLottery; 111 int money2 = num2 * 2; 112 System.out.println("购买成功!您一共购买了" + num2 +"注彩票, 共花费" + money2 + "元, 彩票号码是"); 113 printAllLottery(arr); 114 backToMenu('a'); 115 break; 116 default: 117 System.out.println("输入有误"); 118 break; 119 } 120 return arr; 121 } 122 123 //自选购买单注彩票 124 public static int[] buyOneLottery(int[] arr) { 125 //获取红球号码 126 Scanner sc = new Scanner(System.in); 127 for (int i = 1;i <= 6 ;i++) { 128 System.out.println("请输入您要购买的第" + i + "个红球的号码(1~33)"); 129 int j = sc.nextInt(); 130 131 if (j >= 1 && j <= 33) { 132 arr[i - 1] = j; 133 }else { 134 System.out.println("您输入的号码有误,请重新输入"); 135 i--; 136 } 137 138 //确保红球数字不重复 139 for (int k = i - 1 ;k >= 1 ;k-- ) { 140 if (arr[i - 1] == arr[k - 1]) { 141 System.out.println("这个号码已经选择过了,请重新输入"); 142 i--; 143 } 144 } 145 } 146 //获取蓝球号码 147 System.out.println("请输入您要购买的蓝球号码(1~16)"); 148 int b = sc.nextInt(); 149 while (b > 16 || b < 0) { 150 System.out.println("您输入的号码有误,请重新输入"); 151 b = sc.nextInt(); 152 } 153 arr[6] = b; 154 //输出结果 155 System.out.println("购买成功!您购买的双色球号码是:"); 156 printOneLottery(arr); 157 return arr; 158 } 159 160 //印出单个彩票 161 public static void printOneLottery(int[] arr){ 162 for (int i = 0;i < arr.length ;i++) { 163 System.out.print(arr[i] + "\t"); 164 } 165 System.out.println(); 166 } 167 168 //印出所有已买彩票 169 public static void printAllLottery(int[][] arr){ 170 for (int i = 0;i < arr.length ;i++) { 171 if(arr[i][0] != 0) { 172 for (int j = 0;j < arr[i].length ;j++) { 173 System.out.print(arr[i][j] + "\t"); 174 } 175 System.out.println(); 176 }else { 177 return; 178 } 179 } 180 } 181 182 //获取随机彩票 183 public static int[] getRandomLottery(int[] arr){ 184 for (int i = 0;i < 6 ;i++) { 185 int red = (int)(Math.random() * 33 + 1); 186 arr[i] = red; 187 } 188 arr[6] = (int)(Math.random() * 16 + 1); 189 return arr; 190 } 191 192 //查看开奖 193 public static int[][] winLottery(int[][] arr){ 194 //判断是否已购彩票,如否则返回 195 if (arr[0][0] == 0) { 196 System.out.println("您尚未购买任何彩票"); 197 System.out.println(); 198 System.out.println(); 199 backToMenu('a'); 200 return arr; 201 } 202 //获取并输出中奖号码 203 int[] winner = new int[7]; 204 getRandomLottery(winner); 205 System.out.println("==================================================="); 206 System.out.println("\t\t本期的中奖号码是:"); 207 printOneLottery(winner); 208 System.out.println("==================================================="); 209 //获取购买的彩票数目 210 int num = 0; 211 while (arr[num][0] != 0) { 212 num++; 213 } 214 215 //建立一个数组统计中奖情况 {1 ,6 ,0 ,0 ,3...}数字代表该位置的彩票中了几等奖 216 int[] result1 = new int[num]; 217 //再建立一个数组统计各奖项各自中了多少注 218 int[] result2 = new int[7]; 219 //调取第i张彩票 220 for (int i = 0;i < num ;i++ ) { 221 //建立第i张彩票中红球匹配数变量 222 int red = 0; 223 //调取第i张彩票中的第j个红球号码 224 for (int j = 0;j < 6;j++ ) { 225 //与中奖号码中的六个红球号码一一对比 226 for (int k = 0;k < 6 ;k++ ) { 227 if (arr[i][j] == winner[k]) { 228 red++; 229 } 230 } 231 } 232 233 //判断第i张彩票中了几等奖,并存入result1中 234 if (red == 6 && arr[i][6] == winner[6]) { 235 result1[i] = 1; 236 }else if (red == 6 && arr[i][6] != winner[6]) { 237 result1[i] = 2; 238 }else if (red == 5 && arr[i][6] == winner[6]) { 239 result1[i] = 3; 240 }else if ((red == 5 && arr[i][6] != winner[6]) || (red == 4 && arr[i][6] == winner[6])) { 241 result1[i] = 4; 242 }else if ((red == 4 && arr[i][6] != winner[6]) || (red == 3 && arr[i][6] == winner[6])) { 243 result1[i] = 5; 244 }else if (arr[i][6] == winner[6]) { 245 result1[i] = 6; 246 }else { 247 result1[i] = 0; 248 } 249 } 250 251 //统计n等奖有多少个 252 for (int n = 0;n < 7 ;n++ ) { 253 for (int p = 0;p < num ;p++) { 254 if (result1[p] == n) { 255 result2[n]++; 256 } 257 } 258 } 259 260 //输出中奖结果 261 //若全未中奖,则输出: 262 if (result2[0] == num) { 263 System.out.println("真遗憾,本次购买的" + num + "张彩票均未中奖,欢迎再次光临"); 264 System.out.println("==================================================="); 265 }else { 266 for (int q = 1;q < 7 ;q++ ) { 267 if (result2[q] != 0) { 268 System.out.println("恭喜!您中了" + result2[q] + "注" + q +"等奖,中奖彩票的号码是:"); 269 //找出中奖彩票并输出 270 for (int r = 0;r < num ;r++ ) { 271 //若第r张彩票中了q等奖,则印出第r张彩票的号码 272 if (result1[r] == q) { 273 printOneLottery(arr[r]); 274 } 275 } 276 } 277 } 278 //输出未中奖结果 279 System.out.println("有" + result2[0] + "张彩票没有中奖"); 280 //统计中奖金额 281 int sum = result2[1] * 5000000 + result2[2] * 1000000 + result2[3] * 3000 + result2[4] * 200 + result2[5] * 10 + result2[6] * 5; 282 System.out.println("==================================================="); 283 System.out.println("本次购彩共计" + num +"注,花费" + num * 2 +"元,合计奖金" + sum + "元"); 284 System.out.println("==================================================="); 285 } 286 287 //清空已购彩票记录 288 for (int s = 0;s < arr.length ;s++) { 289 for (int t = 0 ;t < arr[s].length ;t++) { 290 arr[s][t] = 0; 291 } 292 } 293 backToMenu('a'); 294 return arr; 295 } 296 297 //返回主菜单方法 298 public static void backToMenu(char back){ 299 do { 300 System.out.println("是否返回主菜单?(Y/N)"); 301 Scanner sc = new Scanner(System.in); 302 back = sc.next().charAt(0); 303 if (back != 'y' && back != 'Y' && back != 'n' && back != 'N') { 304 System.out.println("输入有误,请重新输入"); 305 }else if (back == 'y' || back == 'Y') { 306 return; 307 }else{ 308 System.out.println("留在这儿也没啥事儿"); 309 } 310 } 311 while (true); 312 } 313 }