规则:机选7个数
要求:7个数不能重复;7个数的取值区间1~31之间;7个数都是随机生成的
用户选7个数
要求:7个数不能重复;7个数的取值区间1~31之间; 7个数都是用户输入的
比对机选的数字与用户选择的数字是否一致
思路:
1,生成7个机选数字,使用数组存储
2,让用户输入7个数,使用数组存储
3,比对机选的数字与用户选择的数字是否一致
方法一:将数据存储 在数组中,数组长度大小固定
import java.util.Random;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
System.out.println("欢迎来到31选7XX游戏");
while(true) {
System.out.println();
//用户号码
int[] userNums = user();
System.out.print("本次选择的号码为:");
for (int i : userNums) {
System.out.print(i+",");
}
//中奖号码
int[] randomNums = suiJi();
System.out.println();
System.out.print("本期中奖号码为:");
for (int i : randomNums) {
System.out.print(i+",");
}
System.out.println();
int level = level(randomNums, userNums);
switch (level) {
case 7:
System.out.println("一等奖,别墅靠海");
break;
case 6:
System.out.println("二等奖,500万");
break;
case 5:
System.out.println("三等奖,心系天下");
break;
case 4:
System.out.println("四等奖,吃火锅");
break;
case 3:
System.out.println("五等奖,泡面一桶");
break;
default:
System.out.println("谢谢惠顾,感谢您为福利事业做出贡献,本次中了"+level+"数");
break;
}
}
}
//机选7个数
public static int[] suiJi() {
Random ran = new Random();
//生成7个机选数字,使用数组存储
int[] num1 = new int[7];
for (int i = 0; i < num1.length; i++) {
//7个数的取值区间1~31之间
int x = ran.nextInt(31)+1;
if (compare(num1, x)) {
i--;
}else {
num1[i] = x;
}
}
return num1;
}
//用户选7个数
public static int[] user() {
Random ran = new Random();
Scanner scan = new Scanner(System.in);
System.out.println("请输入1~31之间的数字:");
//让用户输入7个数,使用数组存储
int[] num2 = new int[7];
for (int i = 0; i < num2.length; i++) {
//7个数的取值区间1~31之间
System.out.println("请输入第"+(i+1)+"位数为:");
int x = scan.nextInt();
//判断数字是否在1~31范围内
if (x < 1 || x > 31) {
System.out.println("请输入1~31之间的数");
i--;
//判断输入的数字是否重复
}else if (compare(num2, x)) {
System.out.println("已经选择过该号码,请重新选择");
i--;
}else {
num2[i] = x;
}
}
return num2;
}
//判断输入的是否重复
public static boolean compare(int[] num,int tag) {
for (int i : num) {
if (i == tag) {
System.out.println("该数已经存在了!");
return true;
}
}
return false;
}
//计数猜对数的个数
public static int level(int[] num1,int[] num2) {
int num =0;
for (int i : num1) {
for (int j : num2) {
if (i == j) {
num++;
}
}
}
return num;
}
}
结果 1:
方法二:使用 ArrayList 创建对象 储存输入的数据
package com.day02.caipiao;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
System.out.println("******** 欢 迎 来 到 福 利 彩 票 *********");
ArrayList<Integer> num1 = QuShu.SuiJi();
ArrayList<Integer> num2 = QuShu.UserGuess();
System.out.println("本期中奖号码为:"+num1);
System.out.println("用户选取号码为:"+num2);
int tag = QuShu.Compare(num1, num2);
switch (tag) {
case 7:
System.out.println("一等奖:海边别墅");
break;
case 6:
System.out.println("二等奖:法拉利一辆");
break;
case 5:
System.out.println("一等奖:喜得500万");
break;
case 4:
System.out.println("一等奖:奖励2000¥");
break;
case 3:
System.out.println("一等奖:五元一桶泡面");
break;
default:
System.out.println("感谢您为福利彩票做出的贡献!");
break;
}
System.out.println("您本次猜到"+tag+"个数,再接再厉!");
}
}
//另创建一个类,获取数据并处理
package com.day02.caipiao;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
public class QuShu {
//系统随机取数
public static ArrayList<Integer> SuiJi() {
ArrayList<Integer> list = new ArrayList<Integer>();
Random random = new Random();
while (list.size() < 7) {
int num = random.nextInt(31)+1;
//判断随机生成的数是否存在集合中,不存在就增加
if (!list.contains(num)) {
list.add(num);
}
}
return list;
}
//用户输入数值
public static ArrayList<Integer> UserGuess() {
ArrayList<Integer> list2 = new ArrayList<Integer>();
Scanner scanner = new Scanner(System.in);
while(list2.size() < 7) {
System.out.println("请输入第"+(list2.size()+1)+"个数:");
int num1 =scanner.nextInt();
if (num1 < 0 ||num1 >31) {
System.out.println("此数不在选取范围内,请重新输入:");
}
else if(list2.contains(num1)) {
System.out.println("此数已存在,请重新输入:");
}else{
list2.add(num1);
}
}
return list2;
}
//比较用户输入的与随机产生的数值
public static int Compare(ArrayList<Integer> list,ArrayList<Integer> list2) {
int count = 0;
for (Integer integer : list2) {
if (list.contains(integer)) {
count++;
}
}
return count ;
}
}
结果 2: