您的位置:首页 > 其它

0710 第七次作业(双色球)

2018-07-10 22:20 344 查看

双色球

需求:

双色球投注区分为红色球号码区和蓝色球号码区,
红色球号码区由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                 int h = 0;
65                 do {
66                     //将新购买的彩票添加至二维数组最左侧的空位中
67                     for (h = 0;h <= arr.length ;h++) {
68                         int[] tempLottery = new int[7];
69                         //找到二维数组最左边空位的位置
70                         if (arr[h][0] != 0) {
71                             continue;
72                         }else {
73                             arr[h] = buyOneLottery(tempLottery);
74                             break;
75                         }
76                     }
77
78                     //实现循环购买
79                     System.out.println("是否继续购买?(Y/N)");
80                     char b = sc.next().charAt(0);
81                     while (b != 'y' && b != 'Y' &&b != 'n' &&b != 'N'){
82                         System.out.println("输入的信息有误,请重新输入");
83                         System.out.println("是否继续购买?(Y/N)");
84                         b = sc.next().charAt(0);
85                     }
86                     if (b == 'y' || b == 'Y'){
87                         continue;
88                     }else {
89                         break;
90                     }
91                 }while (true);
92
93                 //输出购买结果
94                 int num1 = h + 1;
95                 int money1 = (h + 1) * 2;
96                 System.out.println("您一共购买了" + num1 +"注彩票, 共花费" + money1 + "元, 彩票号码是:");
97                 printAllLottery(arr);
98                 System.out.println();
99                 backToMenu('a');
100             break;
101             //机选号码购买
102             case 2:
103                 System.out.println("请输入您想购买的彩票数量(最多100注):");
104                 //获取想要购买的机选彩票数量
105                 int numberOfLottery = sc.nextInt();
106                 //获取已经购买的彩票数量
107                 int numberOfLotteryBought = 0;
108                 while (arr[numberOfLotteryBought][0] != 0) {
109                     numberOfLotteryBought++;
110                 }
111                 //添加机选彩票到已买彩票
112                 for (int m = numberOfLotteryBought;m < numberOfLotteryBought + numberOfLottery ;m++) {
113                     int[] tempLottery = new int[7];
114                     arr[m] = getRandomLottery(tempLottery);
115                 }
116                 //打印所有已购彩票
117                 int num2 = numberOfLotteryBought + numberOfLottery;
118                 int money2 = num2 * 2;
119                 System.out.println("购买成功!您一共购买了" + num2 +"注彩票, 共花费" + money2 + "元, 彩票号码是");
120                 printAllLottery(arr);
121                 backToMenu('a');
122             break;
123             default:
124                 System.out.println("输入有误");
125             break;
126         }
127         return arr;
128     }
129
130     //自选购买单注彩票
131     public static int[] buyOneLottery(int[] arr) {
132         //获取红球号码
133         Scanner sc = new Scanner(System.in);
134         for (int i = 1;i <= 6 ;i++) {
135             System.out.println("请输入您要购买的第" + i + "个红球的号码(1~33)");
136             int j = sc.nextInt();
137
138             if (j >= 1 && j <= 33) {
139                 arr[i - 1] = j;
140             }else {
141                 System.out.println("您输入的号码有误,请重新输入");
142                 i--;
143             }
144
145             //确保红球数字不重复
146             for (int k = i - 1 ;k >= 1 ;k-- ) {
147                 if (arr[i - 1] == arr[k - 1]) {
148                 System.out.println("这个号码已经选择过了,请重新输入");
149                 i--;
150                 }
151             }
152         }
153         //获取蓝球号码
154         System.out.println("请输入您要购买的蓝球号码(1~16)");
155         int b = sc.nextInt();
156         while (b > 16 || b < 0) {
157             System.out.println("您输入的号码有误,请重新输入");
158             b = sc.nextInt();
159         }
160         arr[6] = b;
161         //输出结果
162         System.out.println("购买成功!您购买的双色球号码是:");
163         printOneLottery(arr);
164         return arr;
165     }
166
167     //印出单个彩票
168     public static void printOneLottery(int[] arr){
169         for (int i = 0;i < arr.length ;i++) {
170             System.out.print(arr[i] + "\t");
171         }
172         System.out.println();
173     }
174
175     //印出所有已买彩票
176     public static void printAllLottery(int[][] arr){
177         for (int i = 0;i < arr.length ;i++) {
178             if(arr[i][0] != 0) {
179                 for (int j = 0;j < arr[i].length ;j++) {
180                     System.out.print(arr[i][j] + "\t");
181                 }
182                 System.out.println();
183             }else {
184                 return;
185             }
186         }
187     }
188
189     //获取随机彩票
190     public static int[] getRandomLottery(int[] arr){
191         for (int i = 0;i < 6 ;i++) {
192             int red = (int)(Math.random() * 33 + 1);
193             arr[i] = red;
194             //如果第i个号码和前面的某个号码相同,则重新生成一个
195             for (int j = 0;j < i;j++) {
196                 if (arr[i] == arr[j]) {
197                     i--;
198                 }
199             }
200         }
201         arr[6] = (int)(Math.random() * 16 + 1);
202         return arr;
203     }
204
205     //查看开奖
206     public static int[][] winLottery(int[][] arr){
207         //判断是否已购彩票,如否则返回
208         if (arr[0][0] == 0) {
209             System.out.println("您尚未购买任何彩票");
210             System.out.println();
211             System.out.println();
212             backToMenu('a');
213             return arr;
214         }
215         //获取并输出中奖号码
216         int[] winner = new int[7];
217         getRandomLottery(winner);
218         System.out.println("===================================================");
219         System.out.println("\t\t本期的中奖号码是:");
220         printOneLottery(winner);
221         System.out.println("===================================================");
222         //获取购买的彩票数目
223         int num = 0;
224         while (arr[num][0] != 0) {
225             num++;
226         }
227
228         //建立一个数组统计中奖情况 {1 ,6 ,0 ,0 ,3...}数字代表该位置的彩票中了几等奖
229         int[] result1 = new int[num];
230         //再建立一个数组统计各奖项各自中了多少注
231         int[] result2 = new int[7];
232         //调取第i张彩票
233         for (int i = 0;i < num ;i++ ) {
234             //建立第i张彩票中红球匹配数变量
235             int red = 0;
236             //调取第i张彩票中的第j个红球号码
237             for (int j = 0;j < 6;j++ ) {
238                 //与中奖号码中的六个红球号码一一对比
239                 for (int k = 0;k < 6 ;k++ ) {
240                     if (arr[i][j] == winner[k]) {
241                         red++;
242                     }
243                 }
244             }
245
246             //判断第i张彩票中了几等奖,并存入result1中
247             if (red == 6 && arr[i][6] == winner[6]) {
248                 result1[i] = 1;
249             }else if (red == 6 && arr[i][6] != winner[6]) {
250                 result1[i] = 2;
251             }else if (red == 5 && arr[i][6] == winner[6]) {
252                 result1[i] = 3;
253             }else if ((red == 5 && arr[i][6] != winner[6]) || (red == 4 && arr[i][6] == winner[6])) {
254                 result1[i] = 4;
255             }else if ((red == 4 && arr[i][6] != winner[6]) || (red == 3 && arr[i][6] == winner[6])) {
256                 result1[i] = 5;
257             }else if (arr[i][6] == winner[6]) {
258                 result1[i] = 6;
259             }else {
260                 result1[i] = 0;
261             }
262         }
263
264         //统计n等奖有多少个
265         for (int n = 0;n < 7 ;n++ ) {
266             for (int p = 0;p < num ;p++) {
267                 if (result1

== n) { 268 result2 ++; 269 } 270 } 271 } 272 273 //输出中奖结果 274 //若全未中奖,则输出: 275 if (result2[0] == num) { 276 System.out.println("真遗憾,本次购买的" + num + "张彩票均未中奖,欢迎再次光临"); 277 System.out.println("==================================================="); 278 }else { 279 for (int q = 1;q < 7 ;q++ ) { 280 if (result2[q] != 0) { 281 System.out.println("恭喜!您中了" + result2[q] + "注" + q +"等奖,中奖彩票的号码是:"); 282 //找出中奖彩票并输出 283 for (int r = 0;r < num ;r++ ) { 284 //若第r张彩票中了q等奖,则印出第r张彩票的号码 285 if (result1[r] == q) { 286 printOneLottery(arr[r]); 287 } 288 } 289 } 290 } 291 //输出未中奖结果 292 System.out.println("有" + result2[0] + "张彩票没有中奖"); 293 //统计中奖金额 294 int sum = result2[1] * 5000000 + result2[2] * 1000000 + result2[3] * 3000 + result2[4] * 200 + result2[5] * 10 + result2[6] * 5; 295 System.out.println("==================================================="); 296 System.out.println("本次购彩共计" + num +"注,花费" + num * 2 +"元,合计奖金" + sum + "元"); 297 System.out.println("==================================================="); 298 } 299 300 //清空已购彩票记录 301 for (int s = 0;s < arr.length ;s++) { 302 for (int t = 0 ;t < arr[s].length ;t++) { 303 arr[s][t] = 0; 304 } 305 } 306 backToMenu('a'); 307 return arr; 308 } 309 310 //返回主菜单方法 311 public static void backToMenu(char back){ 312 do { 313 System.out.println("是否返回主菜单?(Y/N)"); 314 Scanner sc = new Scanner(System.in); 315 back = sc.next().charAt(0); 316 if (back != 'y' && back != 'Y' && back != 'n' && back != 'N') { 317 System.out.println("输入有误,请重新输入"); 318 }else if (back == 'y' || back == 'Y') { 319 return; 320 }else{ 321 System.out.println("留在这儿也没啥事儿"); 322 } 323 } 324 while (true); 325 } 326 }

[p] 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: