java实现猜数字游戏教程

 更新时间:2026年06月03日 08:45:05   作者:安生生申  
这段描述主要讲解了一个4位数猜数字游戏的实现思路和代码框架,通过递归验证用户输入,并使用洗牌算法生成随机数,最终根据规则输出A和B的数量,帮助读者理解游戏逻辑和编程实现

一.游戏规则

输入不重复的4位数,输出A:1,B:1,

其中A表示位置和数字都正确,B表示数字正确位置不正确

假如用户输入1234,随机数为1405 输出为A:1,B: 2,

 用户输入1432,随机数为1405 输出为A:2,B: 2,

二.实现思路

1.获取用户输入,判断输入是否正确,使用递归,如果不正确一直提示输入直到正确为止

2.生成不重复的随机数,使用洗牌算法。

3.判断数据是否正确,如果条件全部满足直接跳出循环

三.代码实现

import java.util.Random;
import java.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;
    }
    ;
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java中ResponseBodyEmitter的实现

    Java中ResponseBodyEmitter的实现

    这篇文章主要介绍了Java中ResponseBodyEmitter的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Java使用BigDecimal确保数值计算精度的最佳实践指南

    Java使用BigDecimal确保数值计算精度的最佳实践指南

    这篇文章主要为大家详细介绍了Java使用BigDecimal确保数值计算精度的相关知识,BigDecimal一般适用于金融计算、高精度运算等对数值准确性要求高的场景,下面小编就和大家详细介绍一下吧
    2026-01-01
  • idea jar包冲突的排查过程

    idea jar包冲突的排查过程

    文章介绍了如何使用MavenHelper插件快速定位Java项目中的jar包冲突,传统方法使用IDEA的Diagrams插件,但MavenHelper提供了更直观的冲突展示和便捷的排除选项,使用方法包括安装插件、分析依赖、查看和处理冲突
    2025-10-10
  • Java实现导出合并Excel单元格

    Java实现导出合并Excel单元格

    随着数据的不断增长,很多时候需要将数据导出到Excel中进行分析、处理和展示。本文将介绍如何使用Java实现Excel导出,并且可以合并单元格,需要的可以参考一下
    2023-04-04
  • Java类继承关系中的初始化顺序实例详解

    Java类继承关系中的初始化顺序实例详解

    这篇文章主要介绍了Java类继承关系中的初始化顺序,结合实例形式详细对比分析了Java非继承关系中的初始化与继承关系中的初始化相关原理与操作技巧,需要的朋友可以参考下
    2019-09-09
  • Spring循环依赖的解决方案详解

    Spring循环依赖的解决方案详解

    这篇文章将用实例为大家详细介绍了介绍如何解决Spring的循环依赖问题,文中的示例代码讲解详细,对我们学习Spring有一定的帮助,需要的可以参考一下
    2022-07-07
  • 详解MyBatis延迟加载是如何实现的

    详解MyBatis延迟加载是如何实现的

    MyBatis 的延迟加载(懒加载)特性允许在需要使用关联对象数据时才进行加载,而不是在执行主查询时就加载所有相关数据,我们将通过以下几个方面来深入了解MyBatis的延迟加载实现机制,需要的朋友可以参考下
    2024-07-07
  • 全面了解Java中的CAS机制

    全面了解Java中的CAS机制

    下面小编就为大家带来一篇全面了解Java中的CAS机制。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • java中实现控制台打印sql语句方式

    java中实现控制台打印sql语句方式

    这篇文章主要介绍了java中实现控制台打印sql语句方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • 因不会远程debug调试我被项目经理嘲笑了

    因不会远程debug调试我被项目经理嘲笑了

    这篇文章主要介绍了远程debug调试的相关内容,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08

最新评论