3D彩票系统,面向对象编程版
扩展:动态扩容数组
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
src
- 源数组。srcPos
- 源数组中的起始位置。dest
- 目标数组。destPos
- 目的地数据中的起始位置。length
- 要复制的数组元素的数量。
package com.hrf.lotterySystem01;import java.util.Random;
import java.util.Scanner;import com.hrf.lanou.java05.MyException;public class LotterySystemClassTest {private static Scanner sc = new Scanner(System.in);private static Random r = new Random();private static int surplus = 100; // 剩余钱private static int maxCount = 200; // 用来统计最大购买数private static Lottery[] arr = new Lottery[maxCount];// 彩票数组// 二维数组,第一维数组代表统计最大购买数,第二维数组只有四个数字代表三个号码+直选/组六private static int index = 0;// 数组下标,已经购买的彩票数目public static void main(String[] args) {arr = extendsArray(arr);optional();}// 动态扩容一维数组public static Lottery[] extendsArray(Lottery[] array) { Lottery[] arr = new Lottery[array.length * 100]; // 扩展为原来100倍for (int i = 0; i < array.length; i++) {
// System.arraycopy(src, srcPos, dest, destPos, length);System.arraycopy(array, 0, arr, 0, array.length); // 数组拷贝}return arr;}// 3D彩票系统要实现 查询余额,充值,自选彩票,机选彩票,查看购买彩票,开奖,退出等功能
// 选择序号public static void optional() {program();System.out.println("请输入你要选择的项目数字 : ");while (true) {int num = sc.nextInt();if (num >= 0 && num <= 6) {switch (num) {case 1:
// 查看余额blance();break;case 2:
// 进行充值recharge();break;case 3:
// 自选selfOptionalLottery();break;case 4:
// 机选machineOptionalLottery();break;case 5:
// 查看购买彩票findBuyLottery();break;case 6:
// 开奖drawPrice();break;case 0:
// 退出exit();return;}} else {System.out.println("你输入的数字有误,请重新输入:");optional();}return;}}// 属性元素,主菜单public static void program() {System.out.println("------华丽分割线------");System.out.println("1.查看余额");System.out.println("2.充值");System.out.println("3.自选");System.out.println("4.机选");System.out.println("5.查看购买彩票");System.out.println("6.开奖");System.out.println("0.退出");}// 1.查看余额public static void blance() {// 初始余额System.out.println("当前余额为:" + surplus + "元");optional();}// 2.充值public static void recharge() {System.out.println("充值活动:充50送20元,充100送50元,充500送300元");System.out.println("请输入充值额度:");int money = sc.nextInt();if (money >= 50 && money < 100) {money += 20;surplus += money;System.out.println("充值成功 ! 当前余额为:" + surplus);} else if (money >= 100 && money < 500) {money += 50;surplus += money;System.out.println("充值成功 ! 当前余额为:" + surplus);} else if (money >= 500) {money += 300;surplus += money;System.out.println("充值成功 ! 当前余额为:" + surplus);} else if (money < 0) {System.out.println("输入有误,请重新输入:");recharge();} else {surplus += money;System.out.println("充值成功 ! 当前余额为:" + surplus);}System.out.println("1.继续充值 , 2.退出");System.out.println("请选择:");int re = sc.nextInt();if (re == 1) {recharge();}else if (re == 2) {optional();}else {System.out.println("你输入的数字有误哦!系统为你调到主菜单");optional();}}// 3.自选public static void selfOptionalLottery() {System.out.println("请输入购买彩票的类型: 1.直选 , 2.组六");int type = sc.nextInt();// 输入的类型if (type == 1 || type == 2) {System.out.println("请输入号码(0~9):");int num1 = sc.nextInt();int num2 = sc.nextInt();int num3 = sc.nextInt();if ((num1 >= 0 && num1 <= 9) && (num2 >= 0 && num2 <= 9) && (num3 >= 0 && num3 <= 9)) {Lottery lottery = new Lottery(num1, num2, num3, type);// 创建彩票arr[index] = lottery;// 把彩票存入数组index++;surplus -= 5;// 减钱System.out.println("购买成功!");optional();} else {System.out.println("输入有误,请重新输入!");selfOptionalLottery();// 如果想要抛出异常可以这样写,不过要自定义一个异常类去继承RuntimeExceptionthrow new MyException("输入的数字大于9或者小于0!");}}}// 4.机选public static void machineOptionalLottery() {System.out.println("请输入购买彩票的类型: 1.直选 , 2.组六");int type = sc.nextInt();if (type == 1 || type == 2) {System.out.println("输入要买多少注:");int count = 0;// 输入买的注数,一维数组里面的下标while (true) {count = sc.nextInt();// 输入要买的注数if (count > 0) {if (count + index > arr.length) {System.out.println("超过最大购买次数!");// 最大购买次数为100System.out.println("请重新输入:");} else if (count * 5 < surplus) {break;// 跳出循环,余额充足} else {System.out.println("余额不足请先充值!为你跳到菜单页面!");optional();// 到菜单页面}} else {System.out.println("你的输入有误,请重新输入:");}}
// 条件小于count注数,随机生成count行,对index++操作;for (int i = 0; i < count; i++) {int num1 = r.nextInt(10);int num2 = r.nextInt(10);int num3 = r.nextInt(10);Lottery lottery = new Lottery(num1, num2, num3, type);// 创建彩票arr[index] = lottery;// 把彩票存到数组里面index++;// 每存一个就自增一个}surplus -= count * 5;// 减钱System.out.println("机选" + count + "次");optional();} else {System.out.println("你输入的有误,请重新输入:");machineOptionalLottery();}}// 5.查看购买彩票public static void findBuyLottery() {if (index > 0) {for (int i = 0; i < index; i++) {System.out.print(arr[i] + " ");if (arr[i].getType() == 1) {System.out.println("直选");} else {System.out.println("组六");}}} else {System.out.println("你还没有购买任何彩票哦!");}optional();}// 6.开奖public static void drawPrice() {int price1 = r.nextInt(10);int price2 = r.nextInt(10);int price3 = r.nextInt(10);System.out.println("开奖号码为:" + price1 + " " + price2 + " " + price3 + " ");
// 把中奖号码封装成一个彩票Lottery p1 = new Lottery(price1, price2, price3);for (int i = 0; i < index; i++) {// 找到买到的彩票Lottery lottery = arr[i];
// 判断彩票有没有中奖int type = lottery.getType();//购买彩票的第四个数的数据if (type == 1) {// 直选if (lottery.isDirectSelect(p1)) {System.out.println(lottery.toString()+"直选" + " " +"恭喜你中奖了!");// 加钱surplus += 1000;} else {System.out.println(lottery.toString()+"直选" + " " +"很遗憾你没有中奖!请再接再厉!");}} else {// 组六if (lottery.isSetOfSix(p1)) {System.out.println(lottery.toString()+ "组六" + " " +"恭喜你中奖了!");surplus += 100;} else {System.out.println(lottery.toString()+ "组六" + " " +"很遗憾你没有中奖!请再接再厉!");}}}index = 0;// 清空数组optional();}
// 0.退出public static void exit() {System.out.println("欢迎下次光临!");}}
package com.hrf.lotterySystem01;import java.util.Arrays;public class Lottery {
// 彩票的对象代表一注信息private int num1;private int num2;private int num3;private int type;public Lottery(int num1, int num2, int num3, int type) {super();this.num1 = num1;this.num2 = num2;this.num3 = num3;this.type = type;}public Lottery(int num1, int num2, int num3) {super();this.num1 = num1;this.num2 = num2;this.num3 = num3;}public Lottery() {super();}public int getNum1() {return num1;}public void setNum1(int num1) {this.num1 = num1;}public int getNum2() {return num2;}public void setNum2(int num2) {this.num2 = num2;}public int getNum3() {return num3;}public void setNum3(int num3) {this.num3 = num3;}public int getType() {return type;}public void setType(int type) {this.type = type;}@Overridepublic String toString() {return num1 + " " + num2 + " " + num3 + " ";}// 判断直选是否正确public boolean isDirectSelect(Lottery cp) {if(num1 == cp.num1 && num2 == cp.num2 && num3 == cp.num3) {return true;}else {return false;}}
// 判断组六是否正确public boolean isSetOfSix(Lottery cp) {int[] arr1 = {num1, num2, num3};int[] arr2 = {cp.num1, cp.num2, cp.num3};Arrays.sort(arr1);Arrays.sort(arr2);return Arrays.equals(arr1, arr2);}}
3D彩票系统,面向对象编程版相关推荐
- 3D彩票系统 更改版
package com.hrf.java05;import java.util.Arrays; import java.util.Random; import java.util.Scanner;pu ...
- JavaScript面向对象编程-第三版不完全系统解读
JavaScript面向对象编程-第三版不完全系统解读 作者:老九-技术大黍 产品:查看原文 社交:知乎 公众号:老九学堂(新手有福利) 特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系笔者 ...
- python面相对象编程超市系统_python面向对象编程: 面向对象版学员管理系统
转载自https://www.cnblogs.com/LynHome/archive/2020/04/06/12650318.html 详细解读请参考https://www.cnblogs.com/b ...
- Java面向对象编程(第2版)_学习记录
<Java面向对象编程(第2版)> 孙卫琴 编著 文章目录 一.介绍 (一)平台与开发环境 (二)一些知识 (三)数组 二.类的生命周期 (一)类的加载 1. 加载 2. 连接 3. 初始 ...
- [Object]面向对象编程(高程版)(二)原型模式
[Object]面向对象编程(高程版)(二)原型模式 博客分类: Web前端-JS语言核心 作者:zccst 三.原型模式 每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个 ...
- 【java学习】 面向对象编程+java购物车系统
文章目录 一.设计对象 二.内存机制 三.购物车系统 四.构造器 构造器 this关键字的作用 一.设计对象 类和对象是什么? 类:是共同特征的描述(设计图); 对象:是真实存在的具体实例; 如何设计 ...
- 面向对象编程(Python版详解)
[辰兮要努力]:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端.后台.数据 ...
- 斗地主Java课程设计_JAVA面向对象编程课程设计——web版斗地主
一.团队课程设计博客链接 二.个人负责模块或任务说明 实体类的设计 斗地主规则的实现 人机自动出牌的算法 实现数据库的DAO模式 三.自己的代码提交记录 注:这里只有部分提交记录,详细的提交记录在团队 ...
- Java 面向对象编程 考试监考安排系统
Java 面向对象编程考试监考安排系统是一种用于安排考试监考人员的软件系统.它可以帮助考试管理人员组织和安排监考人员的任务,确保考试过程的顺利进行. 该系统可以通过使用 Java 面向对象编程技术来实 ...
最新文章
- FPGA设计中MEMORY型数据怎么综合到blockRAM里面(二)
- 好文|张一鸣:10年面试2000人,我发现混的好的人,全都有同一个特质
- vue项目中使用swiper
- 如何使用Sublime Text 3作为Markdown编辑器
- web前端工程师全套教程免费分享
- django:bootstrap table加载django返回的数据
- SQL Server 日志清理、数据文件收缩
- 可信知识实证在UGC时代情报应用中的思考与探索
- SQLServer 联合查询
- SpringMVC实现RESTful风格
- 基础编程题目集 7-3 逆序的三位数 (10 分)
- Android导入第三方jar包
- [WildPackets.OmniPeek].OmniPeek.4.0.1
- opencv图像分析与处理(16)- 图像压缩中的编码方法:LZW编码
- Matlab图像处理--低通滤波器的Matlab实现及透视图
- 2021-2027全球与中国全自动探针台市场现状及未来发展趋势
- cαr怎么发音_英语c的发音怎么读
- 计算机软件如何永久删除,如何彻底删除电脑软件
- NYOJ 144 小柯的烦恼
- mysql实现自增字符串_Mysql实现字符串主键自增示例教程-Go语言中文社区