商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > java实现猜数字游戏教程

java实现猜数字游戏教程

  发布于2026-06-30 阅读(0)

扫一扫,手机访问

一.游戏规则

猜数字这个经典小游戏,说起来很简单:系统随机生成一个不重复的四位数,玩家每次输入一个四位数,程序会给出两个关键数字——A 表示位置和数字都对的个数,B 表示数字正确但位置不对的个数。举个例子,随机数是 1405,玩家输入 1234,输出就是 A:1, B:2;如果输入 1432,输出就是 A:2, B:2。整个过程直到玩家猜中(A 等于位数)才算结束。

ja va实现猜数字游戏教程

二.实现思路

要把这个游戏用 Ja va 写出来,核心要解决三个问题:

1. 用户输入校验——不仅要保证是整数、位数正确,还得处理小数、越界等情况,这里用递归不断提示用户重新输入,直到拿到合法的值。

2. 生成不重复的随机数——这是个关键点,直接用洗牌算法(Fisher-Yates)打乱 0~9 的数组,然后取前几位,同时要确保首位不是 0(不然四位数就变成三位数了)。

3. 判断逻辑——把用户输入和随机数逐位对比,统计 A 和 B 的个数,一旦 A 等于位数就跳出循环,宣布成功。

三.代码实现

下面是完整的 Ja va 代码,注释比较清晰,直接看实现就好:

import ja va.util.Random;
import ja va.util.Scanner;

public class game {
    public static void main(String[] args) {
//   i次数,y位数
        System.out.println(mathgame(6, 4));
    }
    // 用户输入
    public static double panduan(int y) {
        System.out.println("输入" + y + "位整数数");
        Scanner scanner = new Scanner(System.in);
        double userinput = scanner.nextDouble();
        if (userinput < (1 * Math.pow(10, y - 1)) || userinput > (1 * Math.pow(10, y) - 1)) {
            System.out.println("输入错误");
            return panduan(y);
        }
        if (userinput % 1 != 0) {
            System.out.println("请不要输入小数");
            return panduan(y);
        }
        return userinput;
    }

    //  不重复的随机数
    public static int rodem(int lan) {
        Random r = new Random();
//      生成0-9随机数
        int arr[] = new int[10];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = i;
        }
        for (int i = 0; i < lan; i++) {
            int rodem = r.nextInt(arr.length - i);
            int temp = arr[lan - 1 - i];
            arr[lan - 1 - i] = arr[rodem];
            arr[rodem] = temp;
        }
//      判断第一项不能为0
        if (arr[0] == 0) {
            int temp = arr[0];
            int m = arr[r.nextInt(lan-1)+1];
            arr[0] = m;
            arr[m] = temp;
        }
        int result = 0;
        for (int i = 0; i < lan; i++) {
            result = result * 10 + arr[i];
        }
        return result;
    }

    public static String mathgame(int i, int y) {
        //      随机数
        String random = String.valueOf((int) rodem(y));
        //      a表示位置和数字都对
        //      b表示数字对顺序不对

        int a = 0;
        int b = 0;
        String result="失败了";
        for (int n = 0; n < i; n++) {
            a = 0;
            b = 0;
//        获取用户输入
            String userinput = String.valueOf((int) panduan(y));
//            System.out.println(userinput + "用户输入的数据");
//            System.out.println(random + "随机数");
//          判断a

            for (int nft = 0; nft < y; nft++) {
//            处理数据判断
                if (random.charAt(nft) == userinput.charAt(nft)) {
                    a += 1;
                }
//              判断b
                for (int nb = 0; nb < y; nb++) {
                    if (random.charAt(nft) == userinput.charAt(nb)) {
                        b += 1;
                        break;
                    }
                }
            }
            System.out.println("A:" + a + "B:" + b);
            if (a==y){
                 result="成功了";
                break;
            }
        }
        return result;
    }
    ;
}

总结

以上就是猜数字游戏的实现思路和完整代码,从用户输入校验到不重复随机数生成,再到核心的 A/B 判断逻辑,每一步都考虑到了细节。代码可以直接运行,读者可以根据需要调整位数或尝试次数,扩展出不同难度的版本。

本文转载于:https://www.jb51.net/program/365050p2b.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

产品推荐

热门关注