规则:机选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: