一、程序规则要求

1、双色球”彩票投注区分为红色球号码区和蓝色球号码区;
2、“双色球”每注投注号码由6个红色球号码和1个蓝色球号码组成;
3、红色球号码从1--33中选择;蓝色球号码从1--16中选择;
4、红色号码不能重复出现。
5、中奖金额规则

二、分步解析

1、利用函数产生随机数获取到我们的双色球幸运奖号码牌,可使用Random获取随机值;
理论上也可使用(int)(Math.random()*100)%33;获取到红色球号码牌;
math.random生成随机数范围为(0,1],乘以100,强转为int范围为(0,100);
再取模可得(0,33)随机数,考虑到概率分布啥的就不使用这个了;
也可math.random()*33+1取到(0,33】,都可以尝试下;
最后会附上整个程序代码;
该部分代码为:
for (int i = 0; i < luckyBall.length - 1; i++) {// 随机生成6个幸运红球;int luckyNumber = random.nextInt(32) + 1;while (isExist(luckyNumber, luckyBall)) {// 如果存在该球则重新随机luckyNumber = random.nextInt(32) + 1;}luckyBall[i] = luckyNumber;//  System.out.println("第" + i + "次");}luckyBall[luckyBall.length - 1] = random.nextInt(15) + 1;// 随机生成一个幸运蓝球;
2、上面看到一个方法isExsit(),该方法用于判断随机得到的数和数组里目前存储的数是否存在相同的;
因为luckyBall数组我直接定义的长度为7,所以不需要额外扩容什么操作;
自己买的号码myBall我使用的是数组扩容调用;
该方法代码如下:
// 判断生成的或者录入的球号是否存在重复值的方法,规则不允许public static boolean isExist(int luckyNumber, int[] luckyBall) {for (int i = 0; i < luckyBall.length; i++) {if (luckyNumber == luckyBall[i]) {return true;}}return false;}
3、获取了幸运号码,也得完成用户买的号码,用户购买双色球红球范围(0,33】,蓝球(0,16】;
需要判断用户输入是否在这个区间,不在区间则重新输入;
此处由于不确定用户可能输错多少次不在范围内的数;所以使用while循环;
一共需要输入有效的6个红球值,外层循环6次,内层循环直到输入合法才break退出内层while循环;
使用数组进行存储每一次的红球值;
此处需利用数组的一个方法;
Arrays.copyOf(数组名,扩至多少长度);该方法是jdk里带有的可直接扩数组的方法;
此部分代码如下:
//以下生成用户录入数据,保证合理合规while (myBall.length < 6) {while (true) {System.out.print("请您输入您要购买的第" + (myBall.length + 1) + "个红球号码:");int number = scan.nextInt();if (number < 1 || number > 33) {System.out.println("请重新输入1-33的整数:");} else {if (isExist(number, myBall)) {System.out.println("已经选过该数,无法再次选择");} else {myBall = Arrays.copyOf(myBall, myBall.length + 1);myBall[myBall.length - 1] = number;//    System.out.println("当前已挑选完成的红球号码为" + Arrays.toString(myBall));break;}}}}while (true) {// 用户挑选蓝球System.out.println("请您输入您要购买的蓝球号码:");int number = scan.nextInt();if (number < 1 || number > 16) {System.out.println("请重新输入1-16的整数:");} else {myBall = Arrays.copyOf(myBall, myBall.length+1);myBall[myBall.length - 1]=number;break;}}
4、有了随机值产生的数组,有了自己选的号码数组;
又在前面控制过,红球中不会出现相同值,那么我们只需要遍历我们的选号每一个;
拿去和幸运号码数组对比,有一个标记一下;
此处需要注意,红球对比的数为6个,即从下标0开始只能到下标5,所以需要length-1即<6进行遍历
//下面找到红球蓝球中奖个数int equalRedNumber = 0;// 存储红球中奖个数;System.out.println(myBall.length);System.out.println(Arrays.toString(luckyBall));for (int i = 0; i < myBall.length-1; i++) {for (int j = 0; j < myBall.length-1; j++) {if (myBall[i] == luckyBall[j]) {equalRedNumber++;}}}int equalBuleNumber = 0;// 存储蓝球中奖个数;if (myBall[myBall.length - 1] == luckyBall[luckyBall.length - 1]) {equalBuleNumber++;}
5、有了红球中奖数和蓝球中奖数,再根据规则编写if else中奖条件便完成了。

三、整个程序代码

package day08.work;import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;public class TwoColor {public static void main(String[] args) {Scanner scan = new Scanner(System.in);Random random = new Random();int[] luckyBall = new int[7];// 已知的中奖为7个球号码int[] myBall = {};
// 下面系统生成球for (int i = 0; i < luckyBall.length - 1; i++) {// 随机生成6个幸运红球;int luckyNumber = random.nextInt(32) + 1;while (isExist(luckyNumber, luckyBall)) {// 如果存在该球则重新随机luckyNumber = random.nextInt(32) + 1;}luckyBall[i] = luckyNumber;//   System.out.println("第" + i + "次");}luckyBall[luckyBall.length - 1] = random.nextInt(15) + 1;// 随机生成一个幸运蓝球;System.out.println("这里输出系统自动生成的随机数作为幸运号码,用于测试。"+Arrays.toString(luckyBall));
//以下生成用户录入数据,保证合理合规while (myBall.length < 6) {while (true) {System.out.print("请您输入您要购买的第" + (myBall.length + 1) + "个红球号码:");int number = scan.nextInt();if (number < 1 || number > 33) {System.out.println("请重新输入1-33的整数:");} else {if (isExist(number, myBall)) {System.out.println("已经选过该数,无法再次选择");} else {myBall = Arrays.copyOf(myBall, myBall.length + 1);myBall[myBall.length - 1] = number;//   System.out.println("当前已挑选完成的红球号码为" + Arrays.toString(myBall));break;}}}}while (true) {// 用户挑选蓝球System.out.println("请您输入您要购买的蓝球号码:");int number = scan.nextInt();if (number < 1 || number > 16) {System.out.println("请重新输入1-16的整数:");} else {myBall = Arrays.copyOf(myBall, myBall.length+1);myBall[myBall.length - 1]=number;break;}}//下面找到红球蓝球中奖个数int equalRedNumber = 0;// 存储红球中奖个数;System.out.println(myBall.length);System.out.println(Arrays.toString(luckyBall));for (int i = 0; i < myBall.length-1; i++) {for (int j = 0; j < myBall.length-1; j++) {if (myBall[i] == luckyBall[j]) {equalRedNumber++;}}}int equalBuleNumber = 0;// 存储蓝球中奖个数;if (myBall[myBall.length - 1] == luckyBall[luckyBall.length - 1]) {equalBuleNumber++;}System.out.println("红中"+equalRedNumber+"蓝中"+equalBuleNumber);
//下面得出用户是否中奖if (equalRedNumber == 6 && equalBuleNumber == 1) {System.out.println("恭喜您获得一等奖500w");} else if (equalRedNumber == 6) {System.out.println("恭喜您获得二等奖100w");} else if (equalRedNumber == 5 && equalBuleNumber == 1) {System.out.println("恭喜您获得三等奖3000");} else if (equalRedNumber == 5 || (equalRedNumber == 4 && equalBuleNumber == 1)) {System.out.println("恭喜您获得四等奖200");} else if (equalRedNumber == 4 || (equalRedNumber == 3 && equalBuleNumber == 1)) {System.out.println("恭喜您获得五等奖10");}/** else if((equalRedNumber==2&&equalBuleNumber==1)||(equalRedNumber==1&&* equalBuleNumber==1)||equalBuleNumber==1) { System.out.println("恭喜您获得六等奖5");*/else if (equalBuleNumber == 1) {System.out.println("恭喜您获得六等奖5");} else {System.out.println("感谢您为公益事业做出的贡献!");}}// 判断生成的或者录入的球号是否存在重复值的方法,规则不允许public static boolean isExist(int luckyNumber, int[] luckyBall) {for (int i = 0; i < luckyBall.length; i++) {if (luckyNumber == luckyBall[i]) {return true;}}return false;}
}

利用一维数组编写双色球中奖程序(只判断单式彩票)相关推荐

  1. 如何利用一维数组实现二维数组的多列自由升降序排序过程详解

    如何利用一维数组实现二维数组的多列自由升降序排序过程详解 本例只说明多列排序的实现方式,一维数组的排序已经有过讲解不在赘述.所以本文是在已经完成了一维数组排序的函数封装的基础上完善多列排序的过程的详解 ...

  2. 利用一维数组打印杨辉三角

    //利用一维数组打印杨辉三角 void main() {int A[MAX]={1};//A[0]=1 其他都为0int N;//杨辉三角层数int n,i,space;printf("请指 ...

  3. c语言中输入n一个整数存入一维数组,编写程序输入n个整数到一维数组(先输入数据的个数n,再输入n个数据),然后以输入的顺序输出这些数。...

    满意答案 王毛毛00000 2014.05.25 采纳率:58%    等级:7 已帮助:613人 首先声明:我是来被骗的!因为根据经验绝大部分的一级头衔的人都是想到问题才注册百度的,别人回答了基本不 ...

  4. 用C#实现模拟双色球中奖程序 控制台应用程序

    用C#实现模拟双色球中奖控制台应用程序 前言 课题介绍 用到的按键 程序设计 核心代码 完 前言 这是我在大一第一学期C#的课程设计,要求编写一个模拟双色球彩票的控制台应用程序,用以实现简单的模拟选购 ...

  5. 利用一维数组求菲波那契数列前40项的和并输出结果。_[W2D2]斐波那契数列

    题目链接:斐波那契数列 - 题目 - 青藤 OJ 题目来源:经典题 题目大意 输入 ,输出 0,1 开头的斐波那契数列的第 n 项. 这里我们不讨论递推方法,我们采用这道简单的题目简单说一下记忆化搜索 ...

  6. C语言,功能一、利用一维数组和选择法对成绩高低排序,功能二、输出对应的学号,功能三、查找对应学生成绩

    声明:该编译器为vs,所以输入函数写为scanf_s形式! 1.顺序查找 (1)主要在线性表中进行查找,顺序查找通常分为对一般的无序线性表(无序表)的顺序查找和对按关键字有序的顺序表(有序表)的顺序查 ...

  7. python计算器程序_利用Python代码编写计算器小程序

    1 importtkinter2 importtkinter.messagebox3 importmath4 classJSQ:5 6 7 def __init__(self):8 #创建主界面 9 ...

  8. python利用request+tkinter编写双色球查询工具

    最终结果呈现,如下: from random import randint from tkinter import * import json import requestsdef DoubleCol ...

  9. C语言,利用一维数组中选择法对成绩高低排序和输出对应的学号及利用顺序查找查找学生成绩

    声明:该编译器为vs,所以输入函数写为scanf_s形式! 代码如下: #include <stdio.h> #define N 40 int ReadScore(int score[], ...

最新文章

  1. vue中动态样式不起作用? scoped了解一下
  2. 一个简单的Apriltag,数字,动物水果分类器
  3. oracle asm和文件系统,Oracle工具之--ASM与文件系统及跨网络传输文件
  4. matlab气相分解反应动力学,第十二章 化学动力学.ppt
  5. python卸载_删除系统 Python 引发的惨案
  6. 《Linux编程》学习笔记 ·003【Shell编程】
  7. c4d导出html,C4D动力学如何导出fbx或者其他格式?
  8. python编写个人信息查询_使用Python改写的身份证信息查询小程序
  9. 分享一款在线考试学习系统.net源码
  10. 在MacOSX的Vmare Fusion中添加虚拟软驱和制作虚拟软盘
  11. 计算机语言点餐笑话,笑话:逗逼的程序员去点餐,结果·····
  12. mysql值为空返回0 ,否则 返回1
  13. C#实现qq邮箱发送邮件(验证码)
  14. WinHttp.WinHttpRequest.5.1
  15. 服务器维护后必刷绿龙吗,魔兽世界怀旧服世界BOSS绿龙快速收割指南
  16. merge into 的用法
  17. linux创建目录命令-----mkdir
  18. 2016迅雷校园招聘笔试题(1)
  19. EFI PXE 0 for IPv4解决方法,Boot device……解决方法,Windows无法完成安装解决方法
  20. 武林外传寻路call

热门文章

  1. 一个约瑟夫环扩展问题的Python求解
  2. 一个python自动下载论文的爬虫程序
  3. PC连接三菱PLC的方法
  4. 小白转行web前端碎碎念
  5. 阿拉德之怒正版服务器,正版游戏的胜利!阿拉德之怒彻底凉凉,DNF手游这波上线稳了...
  6. 电磁场与仿真软件(23)
  7. RTU和DTU分别是什么?
  8. python中的变量是动态类型的什么意思_Python零基础入门(一):对Python的简单认识...
  9. 自学习式,智能万能空调遥控-----纠结了我一个多礼拜的问题
  10. stm32F103C8T6基于FreeRTOS操作系统的多任务