封装getBall方法,随机生成一组双色球的中奖号码:
红球为1-33中随机6个不重复的数字
蓝球为1-16中随机一个数字
在main方法中接收用户输入的双色球号码,判断用户是否中奖,中奖规则如下:
一等奖:7个号码相符(6个红色球号码和1个蓝色球号码)(红色球号码顺序不限,下同)
二等奖:6个红色球号码相符;
三等奖:5个红色球号码和1个蓝色球号码相符;
四等奖:5个红色球号码,或4个红色球号码和1个蓝色球号码相符;
五等奖:4个红色球号码,或3个红色球号码和1个蓝色球号码相符;
六等奖:1个蓝色球号码相符(有无红色球号码相符均可)。
以下是代码:
//写getBall方法,返回值为int,调用方法时获得一个随机数组
public static int[] getBall() {
//ranball,随机球,红蓝写一起,前6个一判断,最后一个一判断
int ranball[]=new int[7];
Random ran=new Random();
for(int i=0;i<ranball.length;i++) {
//0 1 2 3 4 5 时是红球,随机1-33且不超范围不重复
if(i<6) {
ranball[i]=ran.nextInt(33)+1;
for(int j=0;j<i;j++) {
if(ranball[i]==ranball[j]) {
i--;
}
}
}
//6是蓝球,随机1-16且不超范围
if(i==6) {
ranball[6]=ran.nextInt(16)+1;
}
}
//输出数组,返回随机球ranball数组
return ranball;
}
//main方法
public static void main(String[] args) {
//常规Scanner
Scanner sc=new Scanner(System.in);
int buyball[]=new int[7];
System.out.println("本期中奖号码为:");
//定义一个数组接收随机球,命名prize 奖品
int prize[]=Arrays.copyOf(getBall(), 7);
System.out.println(Arrays.toString(prize));
//定义一个长度为7的数组,让他存储买的球
int buyball[ ]=new int[7];
//自选或者机选
System.out.println("机选请输入0,其他任意数字默认自选");
int way=sc.nextInt();
//输入0是机选
if(way==0) {
System.out.println("随机生成一注双色球号码为:");
//如果机选,buyball重新赋值,调用随机球方法
buyball=Arrays.copyOf(getBall(), 7);
System.out.println(Arrays.toString(buyball));
}else {
//如果自选,buyball重新赋值生成一个长度为7的数组
buyball=new int[7];
Random ran=new Random();
//还是将红球篮球放一起,分别判断
for(int i=0;i<buyball.length;i++) {
//0 1 2 3 4 5 时是红球,随机1-33且不超范围不重复
if(i<6) {
System.out.print("请输入第"+(i+1)+"号红球:");
buyball[i]=sc.nextInt();
if(buyball[i]>33||buyball[i]<1) {
System.out.println("您购买的号码不合法!");
i--;
}
for(int j=0;j<i;j++) {
if(buyball[i]==buyball[j]) {
System.out.println("您购买的号码已重复!");
i--;
}
}
}
//6是蓝球,随机1-16且不超范围
if(i==6) {
System.out.print("请输入购买蓝球号码:");
buyball[6]=sc.nextInt();
if(buyball[i]>16||buyball[i]<1) {
System.out.println("您购买的号码不合法!");
i--;
}
}
}
System.out.println("您自选购买的双色球合计为:");
System.out.println("红球蓝球"+Arrays.toString(buyball));
System.out.println();
}
//定义中奖红球和蓝球个数,前6个遍历找红球,后1个是蓝球
int moneyred=0,moneyblue=0;
//循环遍历,因为可以顺序不同
//如果必须顺序相同,就只写一个循环
for(int i=0;i<buyball.length;i++) {
for(int j=0;j<prize.length;j++) {
if(i<6&&j<6 &&buyball[i]==prize[j]) {
//如果在前6个,红球相等,数量++
moneyred++;
}
if(buyball[6]==prize[6]) {
//最后一个,如果相等,中奖蓝球就是1
moneyblue=1;
}
}
}
System.out.println("您中奖情况为:红球"+moneyred+"个,蓝球"+moneyblue+"个");
//判断,老生常谈
if(moneyred==6&&moneyblue==1) {
System.out.println("您获得一等奖!");
}else if(moneyred==6&&moneyblue==0) {
System.out.println("您获得二等奖!");
}else if(moneyred==6&&moneyblue==7) {
System.out.println("您获得三等奖!");
}else if(moneyred==5&&moneyblue==0 ||moneyred==4&&moneyblue==1) {
System.out.println("您获得四等奖!");
}else if(moneyred==4&&moneyblue==0 ||moneyred==3&&moneyblue==1) {
System.out.println("您获得五等奖!");
}else if(moneyblue==1) {
System.out.println("您获得六等奖!");
}else {
System.out.println("谢谢惠顾!");
}
}