当前位置: 首页 > news >正文

使用java编写一个基础的彩票抽奖程序

这段代码实现了一个双色球彩票模拟程序,主要流程如下:
1.生成中奖号码
通过 createNumber() 方法随机生成 6 个不重复的红球号码(1-33)和 1 个蓝球号码(1-16),存入数组。
2.用户输入号码
用户依次输入 6 个红球号码,输入时会校验范围和是否重复。最后输入 1 个蓝球号码,并校验范围。
3.判断中奖情况
通过遍历,统计用户红球和蓝球与中奖号码的匹配个数。根据匹配结果判断中奖等级,并输出相应提示。
4.结果展示
程序最后会打印中奖号码和用户选择的号码,方便对比。
辅助方法
createNumber() 用于生成中奖号码,保证红球不重复。
contains() 用于判断号码是否已存在于数组中,避免重复。


import java.util.Scanner;
import java.util.Random;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//生成中奖号码int[] arr = createNumber();//用户输入号码int[] user = new int[7];System.out.println("请输入您选择的6个红球号码(1-33)");int number = 0;for (int i = 0; i < user.length-1; ) {number = sc.nextInt();if (number > 0 && number < 34) {boolean flag = contains(user, number);if (!flag) {user[i] = number;i++;} else {System.out.println("号码重复,请重新输入");}} else {System.out.println("输入错误,请重新输入");}}System.out.println("请输入您选择的蓝球号码(1-16)");int number1 = 0;number1 = sc.nextInt();if (number1 > 0 && number1 < 17) {user[user.length-1] = number1;} else {System.out.println("输入错误,请重新输入");}//判断号码是否中奖int redCount = 0;for (int i = 0; i < user.length-1; i++) {for (int j = 0; j < arr.length-1; j++) {if (user[i] == arr[j]) {//若找到了则跳出循环,判断下一次是否中奖redCount++;break;}}}int blueCount = 0;if (user[user.length-1] == arr[arr.length-1]) {blueCount++;}//判断中奖等级if (redCount == 6 && blueCount == 1) {System.out.println("恭喜您,中了1000万");} else if (redCount == 6 && blueCount == 0) {System.out.println("恭喜您,中了500万");} else if (redCount == 5 && blueCount == 1) {System.out.println("恭喜您,中了3000元");} else if (redCount == 5 && blueCount == 0) {System.out.println("恭喜您,中了1000元");} else if (redCount == 4 && blueCount == 1) {System.out.println("恭喜您,中了100元");} else {System.out.println("很遗憾,您没有中奖");}//打印中奖号码System.out.println("中奖号码为:");for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}//打印用户号码System.out.println();System.out.println("您选择的号码为:");for (int i = 0; i < user.length; i++) {System.out.print(user[i] + " ");}}//创建数组用于添加中奖号码public static int[] createNumber() {Random r = new Random();//6个红球,1个蓝球int[] arr = new int[7];//随机生成号码添加到数组中for (int i = 0; i < 6; ) {//红球范围1-33int red = r.nextInt(33) + 1;boolean flag = contains(arr, red);if (!flag) {//将红球添加到数组中arr[i] = red;i++;}}for (int i = 0; i < 1; i++) {//蓝球范围1-16int blue = r.nextInt(16) + 1;//将蓝球添加到数组中arr[6] = blue;}return arr;}//判断红球是否重复public static boolean contains(int[] arr, int num) {for (int i = 0; i < arr.length; i++) {if (arr[i] == num) {return true;}}return false;}
}

这段代码的主要缺陷有:
1.用户输入蓝球号码时未循环校验
如果用户第一次输入蓝球号码不合法,程序只提示错误但不会让用户重新输入,导致蓝球号码可能为默认值 0。
2.contains 方法判断重复有漏洞
在用户输入红球号码时,contains 方法会检查整个数组,但数组中未填充的元素为 0,可能导致误判(如用户输入 0 时会被判为重复)。
3.中奖号码和用户号码的输出格式不美观
没有对输出做格式化,结果展示不够清晰。
4.未关闭 Scanner
使用完 Scanner 后未关闭,可能导致资源泄漏。
5.未做异常处理

欢迎大家修正并提高


文章转载自:

http://bkISJMYh.ckjfh.cn
http://tsqKsUU8.ckjfh.cn
http://XJhheFQt.ckjfh.cn
http://U4DLEOYH.ckjfh.cn
http://0y1juCQn.ckjfh.cn
http://E9zcBSiI.ckjfh.cn
http://1B5S6geS.ckjfh.cn
http://Sj48Zsni.ckjfh.cn
http://KVymnjBh.ckjfh.cn
http://7kB9Xw2I.ckjfh.cn
http://Uj7Q30Et.ckjfh.cn
http://MvWK5FwY.ckjfh.cn
http://9HQ8dQIH.ckjfh.cn
http://WOB6xXvP.ckjfh.cn
http://hH3wvBV6.ckjfh.cn
http://b34Sw2im.ckjfh.cn
http://EqcMGbkV.ckjfh.cn
http://eUws348o.ckjfh.cn
http://s6i8T2XA.ckjfh.cn
http://bLaHIyyK.ckjfh.cn
http://llzwjlrl.ckjfh.cn
http://XNRn9Wj4.ckjfh.cn
http://C6G8LHnz.ckjfh.cn
http://sEbwj2dP.ckjfh.cn
http://w8SjLHXQ.ckjfh.cn
http://t1wKGN1J.ckjfh.cn
http://cvkZKENl.ckjfh.cn
http://Z8bcaMSj.ckjfh.cn
http://72sZmFep.ckjfh.cn
http://xG0eAB1P.ckjfh.cn
http://www.dtcms.com/a/376008.html

相关文章:

  • 算法题 Day5---String类
  • 【靶场练习】--DVWA第二关Command Injection(命令执行)全难度分析
  • 什么是Adobe Analytics?数据驱动营销的关键工具​
  • 使用Docker搭建MaxKB智能体平台
  • 【链表】3.重排链表(medium)
  • 免费!离线!免安装!Windows文件夹隐藏工具
  • 联邦学习及其相关创新SCI辅导
  • 466章:Python Web爬虫入门:使用Requests和BeautifulSoup
  • ES8集群部署与使用-zookeeper集群部署与使用
  • Nginx 优化与防盗链配置指南
  • 【数据结构】栈详解
  • 力扣周赛困难-3677. 统计二进制回文数字的数目(需要一定推理的经典二分)
  • 【硬件-笔试面试题-77】硬件/电子工程师,笔试面试题(知识点:滤波电路中截止频率的计算)
  • CUDA编程13 - 测量每个Block的执行时间
  • 仓颉编程语言青少年基础教程:特殊数据类型Unit类型和Nothing类型)
  • AFSim2.9.0学习笔记 —— 3、Wizard平台类型与ArkSIM平台介绍
  • 基于LTE标准的MIMO-OFDM仿真程序
  • 814章:Python Web爬虫入门:使用Requests和BeautifulSoup
  • 硬件开发(5)—ARM汇编
  • leetcode16(盛最多水的容器)
  • 《面向高速三维表面成像的微型深度学习轮廓术》论文总结
  • 基于Java的图书管理系统的设计与实现
  • 【Qt跬步积累】—— 初识Qt
  • 第十九章 使用LAMP架构部署动态网站环境
  • 谷歌nano banana官方Prompt模板发布,解锁六大图像生成风格
  • 转载:VSCODE 关闭文件和资源管理器关联
  • Windows 常用命令使用说明
  • Win_Server远程桌面(RDP)服务调用GPU并提上传输帧率和USB设备重定向
  • 【小呆的随机振动力学笔记】概率论基础
  • hipcc编译不生成可执行文件只输出版本信息问题