java实现猜数字游戏教程
猜数字游戏由系统生成不重复四位数,玩家输入四位数,程序输出A表示位置和数字均正确的个数,B表示数字正确但位置错误的个数,直至A等于位数。Java实现包括用户输入校验、基于洗牌算法生成不重复随机数及逐位判断逻辑。
一.游戏规则
猜数字这个经典小游戏,说起来很简单:系统随机生成一个不重复的四位数,玩家每次输入一个四位数,程序会给出两个关键数字——A 表示位置和数字都对的个数,B 表示数字正确但位置不对的个数。举个例子,随机数是 1405,玩家输入 1234,输出就是 A:1, B:2;如果输入 1432,输出就是 A:2, B:2。整个过程直到玩家猜中(A 等于位数)才算结束。

二.实现思路
要把这个游戏用 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 判断逻辑,每一步都考虑到了细节。代码可以直接运行,读者可以根据需要调整位数或尝试次数,扩展出不同难度的版本。
Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。
Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。
Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。
PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。
Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等
Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。













