Java实现双色球
2022/1/6 9:33:28
本文主要是介绍Java实现双色球,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目介绍
1.玩法介绍
“双色球”每注投注号码由 6 个红色球号码和1 个蓝色球号码组成。红色球号码从 1~33 中选择,蓝色球号码从 1~16 中选择。 球的数字匹配数量和颜色决定了是否中奖。
2.中奖规则
3.要求
1.生成本期双色球中奖号码。(注意:1.生成的红球随机有序且不可重复 2.蓝球和红球的随机范围不同且篮球允许和红球重复)
2.用户两种产生数据方式
(1)自动生成。(机选)
(2)通过控制台输入竞猜号码。(自选)
3.记录红球、蓝球竞猜正确球的数量,并根据获奖条件输出竞猜结果和本期双色球号码。
分析
- 用数组来代表双色球的选号,数组大小为7,前6个元素表示红色球的号码,最后一个元素表示蓝色球的号码。
int[] array = new int[7]; // 存储双色球的号码 前6个为红球 最后一个为蓝球
这里定义两个数组,一个表示用户的双色球号码,另一个表示中奖的双色球号码。
int[] array = new int[7]; // 存储双色球的号码 前6个为红球 最后一个为蓝球 int[] result; // 中奖的双色球号码
- 定义两个计数器,分别记录红球,蓝球中奖的个数。
int countRed = 0; // 红色球中奖的个数 int countBlue = 0; // 蓝色球中奖个数片
- 利用switch进行分支操作,实现机选和自选
- 机选号码和中奖号码的生成用随机数自动生成,这里将部分重复内容写在了一个函数中。
// 随机生成双色球方法 public static int[] randomArray() { int[] array = new int[7]; // 产生6个不同的随机数 表示6个红球 for (int i = 0; i < 6; i++) { boolean flag = true; // 定义一个标志,判断红球号码是否重复 int randomNum = (int)(Math.random() * 33 + 1); // 随机产生一个红球号码(1~33) // 遍历数组 只有红球要求号码各不相同故只需要遍历前6个号码 for (int j = 0; j < 6; j++) { if (randomNum == array[j]) { // 将数组中所有的号和新产生的随机号码比较 i--; // 将i回退 flag = false; // 表示重复 break; } } if (flag) { // 若不重复 array[i] = randomNum; // 将随机产生的红球号码存放在array中 } } array[6] = (int)(Math.random() * 16 + 1); // 随机生成蓝球号码 1~16 return array; }
- 红球需要升序排序,所以只需要对数组中前6个元素(共7个元素)进行排序即可,这里用的是冒泡排序。
// 排序(从小到大) 冒泡 public static int[] sort (int[] a) { // 只对前6个号码进行排序,故此处为a.length-2 for (int i = 0; i < a.length-2; i++) { for (int j = 0; j < a.length-i-2; j++) { if (a[j] > a[j+1]) { int temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } return a; }
活不多说上代码。
源代码
public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("============欢迎进入双色球机选系统(本期奖金500万)============"); System.out.println("1:机选双色球\t\t\t2:自选双色球"); int n = sc.nextInt(); int[] array = new int[7]; // 存储双色球的号码 前6个为红球 最后一个为蓝球 int[] result; // 中奖的双色球号码 int countRed = 0; // 红色球中奖的个数 int countBlue = 0; // 蓝色球中奖个数 switch(n) { case 1: // 机选双色球 // 随机生成双色球号码 array = randomArray(); // 对生成的红色球号码进行排序 sort(array); // 输出机选结果 System.out.print("机选红球号码:["); for (int i = 0; i < 6; i++) { if (i != 5) { System.out.print(array[i] + ", "); } else { System.out.println(array[i] + "]"); } } System.out.println("机选蓝球号码:[" + array[6] + "]"); break; case 2: // 自选双色球 System.out.println("自选"); System.out.println("请输入您选择的红球号码(1~33)"); for (int i = 0; i < 6; i++) { System.out.print("请输入第" + (i+1) + "个红球的号码:"); array[i] = sc.nextInt(); } System.out.print("请输入蓝色球的号码(1~16):"); array[6] = sc.nextInt(); // 红色球排序 sort(array); break; default: System.out.println("输入错误!"); System.exit(0); } System.out.println("========================正在开奖请等待========================"); // 随机生成中奖的号码 result = randomArray(); // 对生成的红色球中奖号码进行排序 sort(result); // 输出中奖的号码 System.out.print("本期中奖红球号码:["); for (int i = 0; i < 6; i++) { if (i != 5) { System.out.print(result[i] + ", "); } else { System.out.println(result[i] + "]"); } } System.out.println("本期中奖蓝球号码:[" + result[6] + "]"); // 统计红色球中奖个数 for (int i = 0; i < 6; i++) { for (int j = 0; j < 6; j++) { if (array[i] == result[j]) { countRed++; } } } if (array[6] == result[6]) { // 统计蓝色球中奖个数 countBlue++; } System.out.println("选6+1中"+ countRed + "+" + countBlue); // 判断是否中奖 if (countRed <= 3 && countBlue == 0) { System.out.println("很遗憾您没有中奖 ╭(╯^╰)╮"); } else if (countRed < 3 && countBlue == 1) { System.out.println("恭喜您中奖:六等奖! 5块钱!"); } else if ((countRed ==3 && countBlue == 1) || (countRed == 4 && countBlue == 0)) { System.out.println("恭喜您中奖:五等奖! 10块钱!!"); } else if ((countRed == 4 && countBlue == 1) || (countRed == 5 && countBlue == 0)) { System.out.println("恭喜您中奖:四等奖! 200元!!!"); } else if (countRed == 5 && countBlue == 1) { System.out.println("恭喜您中奖:三等奖! 3000元!!!!"); } else if (countRed == 6 && countBlue == 0) { System.out.println("恭喜您中奖:二等奖! "+ 500*0.3 +"万元w(゚Д゚)w!!!!!"); } else { System.out.println("恭喜您中奖:一等奖! 500万元 (^o^) / w(゚Д゚)w!!!!!"); } } // 随机生成双色球方法 public static int[] randomArray() { int[] array = new int[7]; // 产生6个不同的随机数 表示6个红球 for (int i = 0; i < 6; i++) { boolean flag = true; // 定义一个标志,判断红球号码是否重复 int randomNum = (int)(Math.random() * 33 + 1); // 随机产生一个红球号码(1~33) // 遍历数组 只有红球要求号码各不相同故只需要遍历前6个号码 for (int j = 0; j < 6; j++) { if (randomNum == array[j]) { // 将数组中所有的号和新产生的随机号码比较 i--; // 将i回退 flag = false; // 表示重复 break; } } if (flag) { // 若不重复 array[i] = randomNum; // 将随机产生的红球号码存放在array中 } } array[6] = (int)(Math.random() * 16 + 1); // 随机生成蓝球号码 1~16 return array; } // 排序(从小到大) 冒泡 public static int[] sort (int[] a) { // 只对前6个号码进行排序,故此处为a.length-2 for (int i = 0; i < a.length-2; i++) { for (int j = 0; j < a.length-i-2; j++) { if (a[j] > a[j+1]) { int temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } return a; }
总结
这是学习中的一个小案例,作者还在努力学习中,如有考虑不周,请各路大神批评指正,共同学习。
这篇关于Java实现双色球的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22项目:远程温湿度检测系统
- 2024-12-21《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》简介
- 2024-12-21后台管理系统开发教程:新手入门全指南
- 2024-12-21后台开发教程:新手入门及实战指南
- 2024-12-21后台综合解决方案教程:新手入门指南
- 2024-12-21接口模块封装教程:新手必备指南
- 2024-12-21请求动作封装教程:新手必看指南
- 2024-12-21RBAC的权限教程:从入门到实践
- 2024-12-21登录鉴权实战:新手入门教程
- 2024-12-21动态权限实战入门指南