方式一:

/*** @author Lantzrung* @date 2022年7月23日* @Description*/import java.util.Arrays;//控制器
public class Controller {// 定义一个摇号器的引用Maker maker;// 安装摇号器的方法void install(Maker m) {this.maker = m;}// 摇号方法public void play() {maker.doPlay(this);}// 回调方法,打印输出开奖结果public void onResult(int[] arr, String type) {System.out.println(type + "的摇号结果为:" + Arrays.toString(arr));}// 测试代码public static void main(String[] args) {// 控制器控制摇号器,摇双色球Controller c = new Controller();// 摇号器Maker maker = new DoubleBall();// 控制器安装摇号机c.install(maker);// 摇双色球c.play();// 非常6+1Maker maker1 = new SevenBall();// 控制器安装摇号机c.install(maker1);// 摇非常6+1c.play();}
}
/*** @author Lantzrung* @date 2022年7月23日* @Description*/
package com.day0723.homework;
import java.util.Arrays;
//摇号器的接口
public interface Maker {void doPlay(Controller c);
}//摇号实现类:双色球
class DoubleBall implements Maker {// 25选5,不重复@Overridepublic void doPlay(Controller c) {// 1、定义一个数组用来存放结果int[] res = new int[5];// 2、定义一个标记数组【标记当前的随机数是否被获取】【0表示为没有获取过,非0表示已经// 获取到了】int[] label = new int[37];// 定义一个初始化变量控制循环 i 【次数】int i = 0;// 3、循环获取5个随机数while (true) {// 循环退出if (i >= 5) {break;}// --获取随机数int ran = (int) ((Math.random() * 25) + 1);// --判断--没有获取 // 赋值到res数组if (label[ran] == 0) {res[i] = ran;// 将标志位改为非0label[ran] = 1;// i++i++;} else {// --判断--已经获取continue;}}// 4、得到结果,进行排序【数组工具类】Arrays.sort(res);// 5、响应结果给controllerc.onResult(res, "双色球");}
}//摇号实现类:6+1
class SevenBall implements Maker {@Overridepublic void doPlay(Controller c) {// 1、定义一个数组用来存放结果int[] res = new int[7];// 2、定义一个标记数组【标记当前的随机数是否被获取】【0表示为没有获取过,非0表示已经 // 获取到了】int[] label = new int[37];// 15 label[15]==0 //25 label[25]==0// 定义一个初始化变量控制循环 i 【次数】int i = 0;// 0~4// 3、循环获取7个随机数while (true) {// 循环退出if (i >= 7) {break;}// --获取随机数int ran = (int) (Math.random() * 36) + 1;if (label[ran] == 0) {// --判断--没有获取// 赋值到res数组res[i] = ran;// 将标志位改为非0label[ran] = 1;// i++i++;} else {// --判断--已经获取continue;}}// 4、得到结果,进行排序【数组工具类】Arrays.sort(res);// 6、拷贝一个新的数组,增加一个长度,并生成特别的号码res = Arrays.copyOf(res, 7);res[6] = (int) ((Math.random() * 16) + 1);// 5、响应结果给controllerc.onResult(res, "非常6+1");}
}

方式二:

/*** @author Lantzrung* @date 2022年7月22日* @Description*/
import java.util.Arrays;public class Controller {Maker maker;void install(Maker m) {this.maker = m;}public void play() {maker.doPlay(this);}public void onResult(int[] arr, String type) {System.out.println("彩票名称:" + type);System.out.println("中奖结果:" + Arrays.toString(arr));}public static void main(String[] args) {Controller c = new Controller();DoubleBall d = new DoubleBall();SevenBall s = new SevenBall();c.install(d);c.play();c.install(s);c.play();}
}
/*** @author Lantzrung* @date 2022年7月22日* @Description*/public interface Maker {void doPlay(Controller c);
}//双色球
class DoubleBall implements Maker {@Overridepublic void doPlay(Controller c) {// 创建一个数组用来存放数据int[] arr = new int[5];// 外循环for (int i = 0; i < arr.length; i++) {// 随机数arr[i] = (int) (Math.random() * 26 + 1);// 内循环for (int j = 0; j < i; j++) {// 判断当i和j的数相等 i自减 填满数组后 退出循环体if (arr[i] == arr[j]) {i--;break;}}}// 数组回调c.onResult(arr, "双色球");}
}class SevenBall implements Maker {@Overridepublic void doPlay(Controller c) {int[] arr = new int[7];for (int i = 0; i < arr.length; i++) {arr[i] = (int) (Math.random() * 36 + 1);for (int j = 0; j < i; j++) {if (arr[i] == arr[j]) {i--;break;}}}c.onResult(arr, "非常6+1");}
}

使用Java语言编程实现摇号机相关推荐

  1. Java面向对象实例(双色球摇号篇)

    要求 1.随机生成几组双色球号码 2.前五个为红号,后一个为蓝号,用"|"隔开 3.用面向对象实现 定义一个类命名为Ball,其中两个属性:a.球的数字 b.球是否已经出现过. 方 ...

  2. 零基础学Java语言---编程题

    零基础学Java语言-编程题 注意:没有上机实际测过,代码仅供参考 1.温度转换 写一个将华氏温度转换成摄氏温度的程序,转换的公式是: °F = (9/5)*°C + 32 其中C表示摄氏温度,F表示 ...

  3. 黑马程序员:Java基础总结----Java语言编程规范

       黑马程序员:Java基础总结        Java语言编程规范:参考自SUN公司文档  ASP.Net+Android+IO开发..Net培训.期待与您交流!  I.   排版规范 A.  规 ...

  4. java语言就业方向_四大就业方向彻底解决你学习Java语言编程的后顾之忧-生活感悟与随笔 -亦是美网络...

    前面的文章中已经给大家介绍了关于Java编程语言的优势.特点以及就业前景等内容,大家之所以这么热衷于Java编程学习,不仅是因为Java是编程市场上最为广泛流行的语言,大家更关心的是学习了Java编程 ...

  5. Java编程语言学习:Java语言编程的基础知识之Java的变量与数据类型、符号、运算符、数组Array总结之详细攻略

    Java编程语言学习:Java语言编程的基础知识之Java的变量与数据类型.符号.运算符.数组Array总结之详细攻略 目录 Java语言编程的基础知识之Java的变量与数据类型.符号.运算符.数组总 ...

  6. java语言编程基础_Java编程基础02——Java语言基础

    1_(常量的概述和使用)* A:什么是常量(constant) 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向对象部分讲) C:字面值常量的分类 字符串常 ...

  7. java语言编程基础_java语言编程基础

    java语言基本要素 高级语言如c++.c#.java等都有一些共同性的东西:关键字.标识符. 运算符.注释.数据类型.常量和变量.语句.函数.数组.高级语言在这些要素上大同小异. Java关键字:一 ...

  8. Java概览(java语言编程艺术笔记)

    Java入门(1)--注释,面向对象,问题分解 注释 简单程序里广泛注释显然是愚蠢的,但是设计更大的,更复杂的程序是一种非常有用的记录. 面向对象 扩展类的实例同时也是现有类的实例. 这个怎么理解?虽 ...

  9. java语言编程三角形图形_编程题:编写程序输入三角形的3条边长,计算并输出... 求助一道JAVA编程题:编写一个类似记事本的图形用......

    导航:网站首页 > 编程题:编写程序输入三角形的3条边长,计算并输出... 求助一道JAVA编程题:编写一个类似记事本的图形用... 编程题:编写程序输入三角形的3条边长,计算并输出... 求助 ...

最新文章

  1. 用Python从头实现一个神经网络
  2. Visual Studio2005无法启动web调试的真正原因
  3. python fastapi_Python|介绍一下我的新伙伴fastapi(一)
  4. The requested URL /nagios/cgi-bin/statusmap.cgi was not found on this server
  5. react html编辑器,react项目中使用富文本编辑器
  6. 【拾贝】hive unoin all map数爆增
  7. 数据结构与算法基础-数组
  8. svn的使用--解决commit冲突问题
  9. 【滤波器】基于matlab GUI FIR+IIR数字滤波器设计【含Matlab源码 324期】
  10. 解决:‘webpack-dev-server‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件
  11. ApacheCN 编程/大数据/数据科学/人工智能学习资源 2019.12
  12. 国外问卷调查赚钱网站
  13. SoftICE初使用
  14. KMP算法的应用——碱基序列匹配
  15. 全自动软化水设备:全自动软化水设备选型指南
  16. C# DGV常用操作
  17. HE网站系统架设过程思路
  18. 职工不休年休假可获3倍工资补偿(转)
  19. 2019 浙江省赛部分题解(The 16th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple)
  20. 树莓派安装smbus_如何配置树莓派并安装有用的库

热门文章

  1. 痞子衡嵌入式:走进二维码(QR Code)的世界(1)- 引言
  2. 算法:A星寻路(含实例)
  3. 【开源项目笔记:platform-wechat-mall】Mybatis 查询数据库返回部分字段
  4. python 三维栅状图_三维地震数据可视化原理及方法
  5. Ueditor上传视频时提示“非法上传文件”
  6. 计算机病毒的算法,计算机病毒从算法划分为几个类型
  7. SegNet分割模型解析(含详细代码及注释)
  8. 基于TCP流协议的数据包通讯
  9. 2022年五一杯数学建模C题火灾报警系统问题求解全过程论文及程序
  10. 会考计算机表格制作,信息技术会考操作题知识点汇总