要求:一共投注7个球,红球6个 1~33之间号码,不能重复。篮球1个,1-16之间号码
分析:第一步:用户投注一组号码
第二步:随机生成一组中奖号码
第三步:判断中奖详情
package com.itheima;
import java.util.Random;
import java.util.Scanner;
public class shuangseqiu1 {
public static void main(String[] args) {
//完成双色球系统的开发!!!
int []userNumbers=userSelectNumber();
System.out.println("投注的号码");
printArray(userNumbers);
int[]luckNumbers= createLuckNumbers();
System.out.println("中奖的号码");
printArray(luckNumbers);
judge(userNumbers,luckNumbers);
}
// 第一步:用户投注一组中奖号码
public static void printArray(int []arr){
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
System.out.print(i== arr.length-1?arr[i]:arr[i]+",");
}
System.out.println("]");
}
//设计一个方法
public static int [] userSelectNumber() {
//创建一个整型数组
int[] numbers = new int[7];
//numbers=[0,0,0,0,0,0,0]
// 0 1 2 3 4 5 6
Scanner sc = new Scanner(System.in);
//遍历前6个位置的数组,让用户依次输入前6个红球号码
for (int i = 0; i < numbers.length - 1; i++) {
while (true) {
System.out.println("请您输入第" + (i + 1) + "个红球号码(1~33之间)");
int number = sc.nextInt();
//先判断红球号码是否在1~33之间
if (number < 1 || number > 33) {
System.out.println("对不起,您输入的红球号码不在1~33之间,请确认!");
} else {
//号码在此区间,还需要判断号码是否重复
if(exist(numbers, number)){
//号码重复
System.out.println("对不起,您当前输入的红球号码以前投注过,重复了,请确认!");
}else {
//不重复
numbers[i]=number;
break;//结束当次投注,结束当次死循环
}
}
}
}
while (true) {
//投注最后一个蓝球号码
System.out.println("请您输入最后一个蓝球号码(1~16)之间");
int number =sc.nextInt();
if(number<1||number>16){
System.out.println("对不起,您当前输入的蓝球号码不对!");
}else{
numbers[6]=number;
break;//录入成功,结束死循环
}
}
return numbers;
}
private static boolean exist(int[] numbers, int number) {
//需求:判断number这个数是否在numbers数组中存在,判断是否在输入前之前就存在了
for (int i = 0; i < numbers.length; i++) {
if(numbers[i]==number){
return true;
}
}
return false;
}
//第二步:随机生成一组中奖号码
public static int[] createLuckNumbers(){
//创建一个整型数组,用于存储这7个数
int[]numbers=new int[7];
Random r = new Random();
//遍历6个位置处,依次随机一个红球号码1~33不重复
for (int i = 0; i < numbers.length-1; i++) {
//i=1 2 3 4 5
while (true) {
//为当前位置随机一个红球号码存储起来,减加法 1·~33==》-1==》(0,32)+1
int number =r.nextInt(33)+1;
//判断这个号码之前是否出现过,红色号码不能重复
if(!exist(numbers ,number)){
//不重复
numbers[i]=number;
break;//结束死循环,代表找到了当前这个位置的一个不重复的红色号码了。
}
}
}
//录入一个篮球号码 1~16
numbers[6]=r.nextInt(6)+1;
return numbers;
}
//第三步:判断中奖情况
public static void judge(int []userNumbers,int[] luckNumber){
//userNumber=[12,14,16,18,23,26,8]
//luckNumber=[16,17,18,19,26,32,8]
//分别定义2个变量用于记录红球命中几个,篮球命中几个
int redCount=0;
int blueCount=0;
//遍历用户投注的6个红球
//判断红球的命中数量
for (int i = 0; i < userNumbers.length-1; i++) {
for (int j = 0; j < luckNumber.length-1; j++) {
if(userNumbers[i]==luckNumber[j]){
redCount++;
break;
}
}
}
// 判断篮球的命中数量
blueCount = userNumbers[6]==luckNumber[6]?1:0;
System.out.println("您命中的红球数量是:"+redCount);
System.out.println("您命中的蓝球数量是:"+blueCount);
//判断中奖详情,并输出
if(redCount==6&&blueCount==0){
System.out.println("恭喜您,中奖1000万");
}else if(redCount==6&&blueCount==1){
System.out.println("恭喜您,中奖500万");
}else if(redCount==5&&blueCount==1) {
System.out.println("恭喜您,中奖3000元");
}else if(redCount==5&&blueCount==0) {
System.out.println("恭喜您,中奖200元");
}else if(redCount==4&&blueCount==0) {
System.out.println("恭喜您,中奖10元");
} else if(redCount<3&&blueCount==1) {
System.out.println("恭喜您,中奖5元");
}else {
System.out.println("感谢您对福彩的支持");
}
}
}