模拟彩票摇号的小游戏(31选7)

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

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值