模拟彩票摇号的小游戏(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
    评论
好的,以下是一个简单的 Java 程序,用于模拟彩票中的 36 7 玩法: ```java import java.util.Arrays; import java.util.Random; import java.util.Scanner; public class Lottery { public static void main(String[] args) { int[] lotteryNumbers = generateLotteryNumbers(); System.out.println("本期彩票中奖号码为:" + Arrays.toString(lotteryNumbers)); int[] userNumbers = getUserNumbers(); System.out.println("您择的号码为:" + Arrays.toString(userNumbers)); int matchedCount = countMatchedNumbers(lotteryNumbers, userNumbers); System.out.println("您中了 " + matchedCount + " 个号码。"); if (matchedCount == 7) { System.out.println("恭喜您中了一等奖!"); } else if (matchedCount == 6) { System.out.println("恭喜您中了二等奖!"); } else if (matchedCount == 5) { System.out.println("恭喜您中了三等奖!"); } else if (matchedCount == 4) { System.out.println("恭喜您中了四等奖!"); } else { System.out.println("很遗憾,您没有中奖。"); } } // 生成彩票中奖号码 private static int[] generateLotteryNumbers() { int[] lotteryNumbers = new int[7]; Random random = new Random(); for (int i = 0; i < lotteryNumbers.length; i++) { int number; do { number = random.nextInt(36) + 1; } while (contains(lotteryNumbers, number)); lotteryNumbers[i] = number; } Arrays.sort(lotteryNumbers); return lotteryNumbers; } // 判断数组中是否包含某个元素 private static boolean contains(int[] array, int element) { for (int i : array) { if (i == element) { return true; } } return false; } // 获取用户择的号码 private static int[] getUserNumbers() { Scanner scanner = new Scanner(System.in); int[] userNumbers = new int[7]; System.out.println("请输入您择的号码(1-36之间的整数):"); for (int i = 0; i < userNumbers.length; i++) { System.out.print("第" + (i + 1) + "个号码:"); int number; do { number = scanner.nextInt(); } while (number < 1 || number > 36 || contains(userNumbers, number)); userNumbers[i] = number; } Arrays.sort(userNumbers); return userNumbers; } // 计算中奖号码个数 private static int countMatchedNumbers(int[] lotteryNumbers, int[] userNumbers) { int count = 0; for (int i : userNumbers) { if (contains(lotteryNumbers, i)) { count++; } } return count; } } ``` 运行程序后,会提示用户输入 7 个号码,然后随机生成彩票中奖号码,并计算用户择的号码中有多少个与中奖号码相同。最后,根据中奖号码个数,给出相应的中奖提示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值