「Java案例」猜数游戏

案例实现

猜数字游戏

设计一个三位数的猜数游戏,三位数随机生成。程序提示用户输入一个三位的数字,依照以下的规则决定赢取多少奖金:1) 如果用户输入的数字和随机数字完全一致,输出:“恭喜恭喜!完全猜对了!获得三个赞!”2) 如果用户输入的数字覆盖了随机生成的所有数字(不管顺序),输出:“输入的数字覆盖了随机生成的所有数字!很棒,获得两个赞!”3) 如果用户输入的数字匹配了1个或2个数字,输出:“输入的数字匹配了1个或2个数字!还不错,获得一个赞!”

# 源文件保存为“GuessNumberDemo.java”
import java.util.Random;

public class GuessNumberDemo {
   
   
  public static void main(String[] args) {
   
   
	    // Generate a lottery
		Random random=new Random();
		int lottery = 100+random.nextInt(900);
		
		// Prompt the user to enter a guess
		java.util.Scanner input = new java.util.Scanner(System.in);
		System.out.print("请输入你猜的三位整数: ");
		int guess = input.nextInt();
		
		// Get digits
		int l1 = lottery / 100;
		int l2 = (lottery % 100) / 10; // l2 = (lottery / 10) % 10
		int l3 = lottery % 10;
		
		int g1 = guess / 100;
		int g2 = (guess % 100) / 10;
		int g3 = guess % 10;
		
		System.out.println("随机生成的整数是:" + lottery);
		
		// Check the guess
		if (guess == lottery)
		  System.out.println("恭喜恭喜!完全猜对了!获得三个赞!");
		else if (g1 == l1 && g3 == l2 && g2 == l3 ||
		    g2 == l1 && g1 == l2 && g3 == l3 ||
		    g2 == l1 && g3 == l2 && g1 == l3 ||
		    g3 == l1 && g1 == l2 && g2 == l3 ||
		    g3 == l1 && g2 == l2 && g1 == l3)
		  System.out.println("输入的数字覆盖了随机生成的所有数字!很棒,获得两个赞!");
		else if (g1 == l1 || g1 == l2 || g1 == l3 ||
		    g2 == l1 || g2 == l2 || g2 == l3 ||
		    g3 == l1 || g3 == l2 || g3 == l3)
		  System.out.println("输入的数字匹配了1个或2个数字!还不错,获得一个赞!");
		else
		  System.out.println("有点遗憾!下次再来!");
	  }
}

运行结果
输入数字550

请输入你猜的三位整数: 550
随机生成的整数是:410
输入的数字匹配了1个或2个数字!还不错,获得一个赞!

猜数游戏实现

# 源文件保存为“NumberGuessingGame.java”
import java.util.Scanner;
import java.util.Random;
import java.util.HashSet;
import java.util.Set;

public class NumberGuessingGame {
   
   
    public static void main(String[] args) {
   
   
        Scanner scanner = new Scanner(System.in);
        Random random = new Random();
        
        // 生成不重复数字的三位数
        int secretNumber;
        do {
   
   
            secretNumber = 100 + random.nextInt(900); // 100-999
        } while (!hasUniqueDigits(secretNumber));
        
        System.out.println("已生成一个三位数,数字不重复,请开始猜测!");
        
        // 获取用户输入
        System.out.print("请输入一个三位数:");
        int guess = scanner.nextInt();
        
        // 验证输入是否为三位数
        if (guess < 100 || guess > 999) {
   
   
            System.out.println("请输入有效的三位数!");
            return;
        }
        
        // 比较数字
        if (guess == secretNumber) {
   
   
            System.out.println("恭喜恭喜!完全猜对了!获得三个赞!");
        } else if (containsAllDigits(secretNumber, guess)) {
   
   
            System.out.println("输入的数字覆盖了随机生成的所有数字!很棒,获得两个赞!");
        } else {
   
   
            int matchedDigits = countMatchedDigits(secretNumber, guess);
            System.out.printf("输入的数字匹配了%d个数字!还不错,获得一个赞!%n", matchedDigits);
        }
        
        System.out.println("正确答案是:" + secretNumber);
        scanner.close();
    }
    
    // 检查数字是否有重复数字
    private static boolean hasUniqueDigits(int number) {
   
   
        Set<Character> digits = new HashSet<>();
        String numStr = String.valueOf(number);
        for (char c : numStr.toCharArray()) {
   
   
            if (!digits.add(c)) {
   
   
                return false;
            }
        }
        return true;
    }
    
    // 检查猜测数字是否包含所有秘密数字
    private static boolean containsAllDigits(int secret, int guess) {
   
   
        Set<Character> secretDigits = new HashSet<>();
        Set<Character> guessDigits = new HashSet<>();
        
        String secretStr = String.valueOf(secret);
        String guessStr = String.valueOf(guess);
        
        for (char c : secretStr.toCharArray()) {
   
   
            secretDigits.add
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜晚回家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值