- 双色球规则:
a)双色球分为红球和蓝球,红球选择的范围为1-33而且红球选择6个数字,蓝球1-16而且只能选择一个。
b)选择方式为随机选择和手动输入选择号码。
c)生成号码的顺序是由小到大。- 功能描述: 通过JavaSE所学知识模拟彩票系统,首先系统能够让用户选择随机选择和手动选择。如果选择的是随机选择,则提示需要购买的注数;如果是手动选择,则让用户首选输入红球数字,然后输入篮球数字。
用户选择或者输入完毕,则对比号码所匹配的奖次,并且把中奖号码都要显示出来。 中奖规则: 1等奖是中6+1,就是全部中了,奖金500万元
2等奖是中6+0 就是红球全部中了,奖金保底3000-2000000元 3等奖是5+1 红球中5个,加篮球奖金3000元
4等奖是5+0或者4+1,奖金200元 5等奖是4+0或者3+1,奖金10元 6等奖是2+1或者1+1或者0+1,奖金5元
中奖号码,要系统自动生成。 业务说明
- 首先系统要生成中奖号码,而且中奖号码中不能有重复的数字,篮球可以和红球中某一个数字相同。
- 当用户输入中奖号码时,需要做判断用户输入的是否为数字,而且一定 要在1-33或1-16之间。
- 最后根据用户购买的注数,提示所中奖金的总金额,并且提示每注所属的奖项范围。4.扩展(选作):定义一个调度器,在一个规定的时间点来验证中奖信息。5.希望大家都能完成。
Test.java
package T;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
Start start=new Start();
System.out.println("本期号码:");
for(int a:start.number){
System.out.print(a+" ");
}
start.cross(start.door());
System.out.println("还需要继续购票吗?Y/N");
String s=sc.nextLine();
if(s.equalsIgnoreCase("Y")){
start.cross(start.door());
}else{
System.out.println("输入错误或者操作不当,正在退出!!!");
System.exit(0);
}
}
}
Base.java
package Test;
/*
新建一个球类的顶级父类
*/
public class Base {
private String Color;
private int[] num;
public Base() {
}
public Base(String color, int[] num) {
Color = color;
this.num = num;
}
public String getColor() {
return Color;
}
public int[] getNum() {
return num;
}
public void setColor(String color) {
Color = color;
}
public void setNum(int[] num) {
this.num = num;
}
@Override
public String toString() {
return "Base{" +
"Color='" + Color + '\'' +
'}';
}
}
HandSelect.java
package Test;
import java.util.HashSet;
import java.util.Scanner;
/*
*手动选择号码的类
* 该类只提供一个方法handSelect,该方法传入俩个数组,并返回一个7位的数组,前六位是从第一个数组中选择的,最后
* 一位是从另外一个数组中选择的。
*/
public class HandSelect {
public int[] handSelect(int[] redBase,int[] blueBase){
/*
该段代码为红球编号数组转为HashSet集合的代码
*/
HashSet<Integer> setArray=new HashSet<>();
for (int i = 0; i < redBase.length; i++) {
setArray.add(redBase[i]);
}
/*
该段代码为蓝球编号数组转为HashSet集合的代码
*/
HashSet<Integer> setArray1=new HashSet<>();
for (int i = 0; i < blueBase.length; i++) {
setArray1.add(blueBase[i]);
}
/*
新建一个数组,用来返回红球和篮球的编号
*/
int[] handSelectArray=new int[7];
Scanner sc=new Scanner(System.in);
System.out.println("请输入你要选择的红球的代号:");
for (int i = 0; i <6 ; i++) {
int s=sc.nextInt();
if(setArray.contains(s)){
handSelectArray[i]=s;
setArray.remove(s);
}else{
System.out.println("您输入错误,正在退出〉〉〉〉");
System.exit(-1);
}
}
System.out.println("请输入蓝球编号: ");
int s = sc.nextInt();
if(setArray1.contains(s)){
handSelectArray[6]=s;
}
return handSelectArray;
}
}
RandomSelect.java
package Test;
import java.util.Random;
public class RandomSelect {
public int[] randomSelect(int[] redBase,int[] blueBase){
Random random=new Random();
Plug plug=new Plug();
int[] array=plug.randomCommon(1,33,6);
int[] array1=new int[7];
for (int i = 0; i < array.length; i++) {
array1[i]=redBase[array[i]];
}
int i=random.nextInt(16)+1;
array1[6]=i;
return array1;
}
}
Plug.java
package Test;
public class Plug {
public static int[] randomCommon(int min, int max, int n) {
if (n > (max - min + 1) || max < min) {
return null;
}
int[] result = new int[n];
int count = 0;
while (count < n) {
int num = (int) (Math.random() * (max - min)) + min;
boolean flag = true;
for (int j = 0; j < n; j++) {
if (num == result[j]) {
flag = false;
break;
}
}
if (flag) {
result[count] = num;
count++;
}
}
return result;
}
}
Kaijiang.java
package Test;
import java.util.HashSet;
import java.util.Random;
public class Kaijiang {
public int[] getNumber(int[] redBase,int[] blueBase){
Random random=new Random();
Plug plug=new Plug();
int[] array1=plug.randomCommon(1,33,6);
int[] array2=new int[7];
for (int i = 0; i < 6; i++) {
array2[i]=redBase[array1[i]];
}
int i=random.nextInt(16)+1;
array2[6]=i;
return array2;
}
/*
1等奖是中6+1,就是全部中了,奖金500万元
2等奖是中6+0 就是红球全部中了,奖金保底3000-200 0000元
3等奖是5+1 红球中5个加篮球,奖金3000元
4等奖是5+0或者4+1,奖金200元
5等奖是4+0或者3+1,奖金10元
6等奖是2+1或者1+1或者0+1,奖金5元
中奖号码,要系统自动生成。
3.业务说明1.首先系统要生成中奖号码,而且中奖号码中不能有重复的数字,
篮球可以和红球中某一个数字相同。2.当用户输入中奖号码时,需要做判断用户
输入的是否为数字,而且一定要在1-33或1-16之间。3.最后根据用户购买的注数,
提示所中奖金的总金额,并且提示每注所属的奖项范围。
4.扩展(选作):定义一个调度器,在一个规定的时间点来验证中奖信息。5.希望
大家都能完成。
*/
public void kaiJiang(int[] number,int[] array){
HashSet hashSet1=new HashSet();
for (int i = 0; i < array.length-1; i++) {
hashSet1.add(number[i]);//将开奖号码的前6个数放入HashSet集合中
}
if(number[6]==array[6]){//中了一个蓝球
for (int i = 0; i < 6; i++) {
if(hashSet1.contains(array[i])){
hashSet1.remove(array[i]);
}
}
if(hashSet1.size()==0){
System.out.println("恭喜您中大奖了,奖金为500万元!!! 恭喜恭喜:)");
}else if(hashSet1.size()==1){
System.out.println("恭喜您中3等奖,奖金为3000元 !!!");
}else if(hashSet1.size()==2){
System.out.println("恭喜您中4等奖,奖金为200元 !!!");
}else if(hashSet1.size()==3){
System.out.println("恭喜您中5等奖,奖金为10元 !!!");
}else if(hashSet1.size()==4||hashSet1.size()==5||hashSet1.size()==6){
System.out.println("恭喜您中6等奖,奖金为5元 !!!");
}else{
System.out.println("抱歉,您是个非酋,好好学习吧!!");
}
}else if(number[6]!=array[6]){
for (int i = 0; i < 5; i++) {
if(hashSet1.contains(array[i])){
hashSet1.remove(array[i]);
}
}
if(hashSet1.size()==0){
System.out.println("恭喜您中2等奖了,奖金为3000元到500万元!!! 恭喜恭喜:)");
}else if(hashSet1.size()==1){
System.out.println("恭喜您中4等奖了,奖金为200元!!!");
}else if(hashSet1.size()==2){
System.out.println("恭喜您中5等奖,奖金为10元 !!!");
}else{
System.out.println("抱歉,您是个非酋,好好学习吧!!");
}
}else {
System.out.println("程序可能出错了emmmm!");
}
}
}
Start.java
package T;
import java.util.Scanner;
public class Start {
Base redBase=new Base(" 红球", new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33});
Base blueBase=new Base("蓝球",new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16});
Kaijiang kaijiang=new Kaijiang();
Scanner sc=new Scanner(System.in);
int[] number = kaijiang.getNumber(redBase.getNum(), blueBase.getNum());//本期号码数组 number
/*
生成本期号码
*/
public int door(){
System.out.println("请选择购号方式:\n 1. 手动购号\n 2. 自动随机购号");
int a=sc.nextInt();
return a;
}
public void cross(int a){
if(a==1){
HandSelect handSelect=new HandSelect();
int[] array=handSelect.handSelect(redBase.getNum(),blueBase.getNum());
System.out.println("您的号码为:");
// Arrays.sort(array);
for (int aa:array
) {
System.out.print(aa+" ");
}
/*
开始兑奖:
*/
kaijiang.kaiJiang(number,array);
}
if(a==2){
System.out.println("请输入您要下的注数: ");
int n=sc.nextInt();
zhushu(n);
}
}
public void zhushu(int n){
RandomSelect randomSelect=new RandomSelect();
for (int i = 0; i < n; i++) {
int[] array=randomSelect.randomSelect(redBase.getNum(),blueBase.getNum());
System.out.println("您的号码为:");
// Arrays.sort(array);
for (int aa:array
) {
System.out.print(aa+" ");
}
/*
开始兑奖:
*/
kaijiang.kaiJiang(number,array);
}
}
}