案例:双色球
需求:投注号码由6个红色号码和1个蓝色号码组成,红色球号码从1-36中选择,蓝球号码从1-16中选择
1.用户输入红球和蓝球号码
//用户输入红球和蓝球号
public static int[] selectNumbers(){
//存储号码,六个红球号,一个蓝球号
int[] numbers = new int[7];
Scanner sc = new Scanner(System.in);
//挑选红球号
for(int i = 0; i < numbers.length - 1 ; i++){
//循环,判断号码是否合法
while(true) {
System.out.println("请您输入第" + (i + 1) + "个红球号码");
//
int number = sc.nextInt();
if (number < 1 || number > 36) {
System.out.println("号码不在范围内,请输入1-36之间的号码");
} else {
if (exist(numbers, number)) {
System.out.println("号码有重复,请重新输入");
} else {
//号码符合,存入数组中
numbers[i] = number;
//结束
break;
}
}
}
}
//挑选蓝球
while(true) {
System.out.println("请您输入第7个蓝球号码");
//
int number = sc.nextInt();
if (number < 1 || number > 16) {
System.out.println("号码不在范围内,请输入1-16之间的号码");
}else{
numbers[6] = number;
//跳出循环
break;
}
}
return numbers;
}
2.判断红球号码是否重复
//判断红球号码是否重复
public static boolean exist(int[] numbers , int number){
//遍历
for(int i = 0 ; i < numbers.length ; i++){
//如果号码为0跳出循环
if(numbers[i] == 0){
break;
}
//输入号码和数组中的数据重复
if(numbers[i] == number){
return true;
}
}
return false;
}
3.系统随机号码
//系统随机号码
public static int[] RandomNumbers(){
int[] numbers = new int[7];
Scanner sc = new Scanner(System.in);
Random random = new Random();
//随机红球号码,1-36 0-35
for(int i = 0 ; i < numbers.length - 1 ; i++){
//循环随机号码
while(true) {
int number = random.nextInt(36) + 1;
if (exist(numbers,number)) {
} else {
numbers[i] = number;
break;
}
}
}
//随机蓝色号码
int number = random.nextInt(16) + 1;
numbers[6] = number;
// for(int i = 0 ; i < numbers.length ; i++){
// System.out.print(numbers[i] + " ");
// }
return numbers;
}
4.判断用户是否中奖
//判断用户是否中奖
public static void judge(int[] userNumbers , int[] luckNumber){
int red = 0;
int blue = 0;
//判断红球中奖个数
for(int i = 0; i < userNumbers.length - 1 ; i++){
for(int j = 0; j < luckNumber.length - 1; j++){
if(userNumbers[i] == luckNumber[j]){
red++;
break;
}
}
}
//判断蓝球个数
if(userNumbers[6] == luckNumber[6]){
blue++;
}
//输出中奖结果
result(red , blue);
}
// 输出结果
public static void result(int red , int blue){
System.out.println("命中红球个数" + red);
System.out.println("命中蓝球个数" + blue);
if(red == 6 && blue == 1){
System.out.println("中奖");
}else{
System.out.println("没中奖");
}
}
}
完整代码
import java.util.Random;
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
//存入系统随机号码
int[] luckNumbers = RandomNumbers();
// 存入用户号码
int[] UserNumbers = selectNumbers();
//判断中奖情况
judge(UserNumbers,luckNumbers);
}
//用户输入红球和蓝球号
public static int[] selectNumbers(){
//存储号码,六个红球号,一个蓝球号
int[] numbers = new int[7];
Scanner sc = new Scanner(System.in);
//挑选红球号
for(int i = 0; i < numbers.length - 1 ; i++){
//循环,判断号码是否合法
while(true) {
System.out.println("请您输入第" + (i + 1) + "个红球号码");
//
int number = sc.nextInt();
if (number < 1 || number > 36) {
System.out.println("号码不在范围内,请输入1-36之间的号码");
} else {
if (exist(numbers, number)) {
System.out.println("号码有重复,请重新输入");
} else {
//号码符合,存入数组中
numbers[i] = number;
//结束
break;
}
}
}
}
//挑选蓝球
while(true) {
System.out.println("请您输入第7个蓝球号码");
//
int number = sc.nextInt();
if (number < 1 || number > 16) {
System.out.println("号码不在范围内,请输入1-16之间的号码");
}else{
numbers[6] = number;
//跳出循环
break;
}
}
return numbers;
}
//判断红球号码是否重复
public static boolean exist(int[] numbers , int number){
//遍历
for(int i = 0 ; i < numbers.length ; i++){
//如果号码为0跳出循环
if(numbers[i] == 0){
break;
}
//输入号码和数组中的数据重复
if(numbers[i] == number){
return true;
}
}
return false;
}
//系统随机号码
public static int[] RandomNumbers(){
int[] numbers = new int[7];
Scanner sc = new Scanner(System.in);
Random random = new Random();
//随机红球号码,1-36 0-35
for(int i = 0 ; i < numbers.length - 1 ; i++){
//循环随机号码
while(true) {
int number = random.nextInt(36) + 1;
if (exist(numbers,number)) {
} else {
numbers[i] = number;
break;
}
}
}
//随机蓝色号码
int number = random.nextInt(16) + 1;
numbers[6] = number;
// for(int i = 0 ; i < numbers.length ; i++){
// System.out.print(numbers[i] + " ");
// }
return numbers;
}
//判断用户是否中奖
public static void judge(int[] userNumbers , int[] luckNumber){
int red = 0;
int blue = 0;
//判断红球中奖个数
for(int i = 0; i < userNumbers.length - 1 ; i++){
for(int j = 0; j < luckNumber.length - 1; j++){
if(userNumbers[i] == luckNumber[j]){
red++;
break;
}
}
}
//判断蓝球个数
if(userNumbers[6] == luckNumber[6]){
blue++;
}
//输出中奖结果
result(red , blue);
}
// 输出结果
public static void result(int red , int blue){
System.out.println("命中红球个数" + red);
System.out.println("命中蓝球个数" + blue);
if(red == 6 && blue == 1){
System.out.println("中奖");
}else{
System.out.println("没中奖");
}
}
}
运行结果
请您输入第1个红球号码
1
请您输入第2个红球号码
2
请您输入第3个红球号码
3
请您输入第4个红球号码
4
请您输入第5个红球号码
5
请您输入第6个红球号码
6
请您输入第7个蓝球号码
7
命中红球个数3
命中蓝球个数0
没中奖