import java.util.Random;

public class CaiShuZi {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

//初始化游戏  游戏说明

System.out.println("---------------------猜数字-----------------------");

System.out.println();

System.out.println("                   游戏说明                    ");

System.out.println();

System.out.println("游戏时会随机产生四个0-9之间的数字,依次输入四个数(数字可以重复)");

System.out.println("如果位置和数字都正确,相应位置显示R");

System.out.println("如果数字存在但位置错误,相应位置显示O");

System.out.println("如果数字不存在,相应位置显示X");

System.out.println("过关条件:在8次之内能猜出正确的数字");

System.out.println();

System.out.println();

boolean fg=false;  //用于判断闯关是否成功

String rt="";     //用于存储随机产生的四个数

while(true) {

System.out.println("1.开始游戏");

System.out.println("2.退出游戏");

System.out.println();

System.out.println("请输入您的选择");

int xh=sc.nextInt();

if(xh==2){break;}

else {

//进行游戏

rt=init();   //获取生成的随机数

for(int i=1;i<8;i++) {

String rl=getInfo(rt,i);   //游戏结果

String rl0="RRRR";

int bt=rl.compareTo(rl0);

if(bt==0) {

fg=true;

break;

}

else

System.out.println(rl);

}

}

if(fg) {

System.out.println("------------恭喜你过关了----------------");

System.out.println();

System.out.println();

System.out.println("退出游戏请输入0,继续游戏请输入其他数字键");

int dh=sc.nextInt();

if(dh==0){break;}

}

else {

System.out.println("--------------很遗憾,您输了--------------------------");

System.out.println();

System.out.println("正确答案是:\t"+rt);

System.out.println();

System.out.println();

System.out.println("退出游戏请输入0,继续游戏请输入其他数字键");

int dh=sc.nextInt();

if(dh==0){break;}

}

}

}

//加载游戏  返回产生的随机数

public static String init() {

//随机产生四个数

Random rd=new Random();

int a1=rd.nextInt(10);

int a2=rd.nextInt(10);

int a3=rd.nextInt(10);

int a4=rd.nextInt(10);

System.out.println("游戏初始化完成!");

String rt="";

rt+=a1;

rt+=a2;

rt+=a3;

rt+=a4;

return rt;

}

//判断游戏结果

public static String getInfo(String a,int i) {

Scanner sc=new Scanner(System.in);

//拆分目标数  (游戏初始化时产生的随机数)

int a1 = Integer.parseInt(a.substring(0,1));

int a2 = Integer.parseInt(a.substring(1,2));

int a3 = Integer.parseInt(a.substring(2,3));

int a4 = Integer.parseInt(a.substring(3,4));

System.out.println();

System.out.println("请输入四个数字,进行第"+i+"次尝试");

int num=sc.nextInt();

//声明四个变量,用于接收用户输入的四个数字

int n1,n2,n3,n4;    //分别代表千位,百位,十位 ,个位

n1=num/1000;

n2=num%1000/100;

n3=num%100/10;

n4=num%10;

String result="";  //用于存储判断结果

//判断各个数位的结果

if(n1==a1) { a1=10; result+="R"; }    //当第一位数字匹配时 ,目标第一位中的数字不能参与后继判断了,因为这样会后继数字的判断

else {

if(n1==a2 || n1==a3 ||n1==a4) {

result+="O";                 //数字存在,但位置不正确

}

else { result+="X";}             //数字和位置都不正确

}

if(n2==a2) { a2=10; result+="R"; }

else {

if(n2==a4 || n2==a3 ||n2==a1) {

result+="O";

}

else { result+="X";}

}

if(n3==a3) { a3=10; result+="R"; }

else {

if(n3==a2 || n3==a4 ||n3==a1) {

result+="O";

}

else { result+="X";}

}

if(n4==a4) { a4=10;result+="R"; }

else {

if(n4==a2 || n4==a3 ||n4==a1) {

result+="O";

}

else { result+="X";}

}

return result;

}

}

>

游戏规则已在游戏初始化界面给出,就不再赘述:

感觉在游戏提示结果的判断上有点小问题

正常的需求是:

如果目标数字是  2005

玩家输入的数字  0000

正确的提示结果  XRRX

我的提示结果是  ORRX

玩家输入的数字  5555

正确的提示结果  XXXR

我的提示结果是  OOOR

我的思路是:

1.从第一位判断,如果目标第一位数字与玩家输入的第一位相同,提示结果的第一位就置为R,并将目标结果的第一位数字置为10,以免影响后面的判断结果,否则就拿玩家输入的第一位数字分别于与目标的第二位,第三位、第四位进行比较,如果有相等的,提示结果的第一位就置为O,否则置为X。

2.进行第二位,第三位,第四位的判断,重复步骤1的过程。

通过分析,我发现了问题的所在,但不知道如何解决,求大神指教

java猜数字游戏界面_传统猜数字游戏的java简易实现相关推荐

  1. 制打印如下所示的n行数字金字塔_关于央行数字货币的技术猜测

    框架 这是一个很不严谨的题目,搞技术的,居然要猜测? 央行数字货币现在已经走入千家百户(深圳的千家百户),看这执行速度马上就要普及,马上用户遍神州.但央行数字货币的技术细节,却深藏不露,鲜有人知. 只 ...

  2. java生成pdf图表_开发员指南:使用Java图表转换为PDF/JPG等图像

    Aspose.Cells for JavaExcel电子表格处理API,它允许Java开发人员在自己的Java应用程序中嵌入可读取.写入和操作Excel电子表格的能力,而无需依赖Microsoft E ...

  3. java.policy无法修改_如何配置Policy文件进行Java安全策略的设置

    中国人最喜欢访问的网站 只要注册ofo就送你10块钱,还等什么,快来注册吧 Java语言具有完善的安全框架,从编程语言.编译器.解释程序到Java虚拟机,都能确保Java系统不被恶意的代码或敌对的编译 ...

  4. 中秋节图案 用java代码打出来_这个中秋,我用 Java 画了一个月饼!

    栈长代表微信公众号 "Java技术栈" 祝所有粉丝中秋佳节快乐! 为了用一种特殊的方式表达我的心意,去年中秋节,我写了这篇文章: 没错,去年一天,我学了 20 种编程语言,刺激.. ...

  5. java泛型 简书_一文带你认识Java泛型基础

    Java泛型基础 1. 认识泛型 泛型是在JDK1.5之后增加的新功能. 泛型可以解决数据的安全性问题, 主要的原理是在类声明的时候通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型. ...

  6. java语言程序设计你_清华大学出版社-图书详情-《Java语言程序设计》

    前言 Java语言是一种典型的面向对象的.跨平台的.支持分布式和多线程的优秀编程语言,具有极强的扩展性.自其诞生以来,迅速被业界认可并广泛应用于Web应用程序的开发中.在此形势下,国内高校在计算机及相 ...

  7. mac上java文件如何编译_如何在Mac上用Java编译和运行程序?

    小编典典 在Mac OSX或任何主要操作系统上编译和运行Java应用程序非常容易.Apple随OSX一起提供了一个功能齐全的Java运行时和开发环境,因此您要做的就是编写Java程序并使用内置工具来编 ...

  8. java编程最新图书_清华大学出版社-图书详情-《Java程序设计》

    前言 Java是一种完全面向对象的程序设计语言,具有卓越的通用性.高效性.平台移植性和安全性,得到广泛的应用.在全球云计算和移动互联网产业高速发展的环境下,Java具备显著的优势和广阔前景.本书以Ja ...

  9. java自动推断类型_推断:Facebook的新Java静态分析工具

    java自动推断类型 如何使用Facebook的Infer改善Java开发工作流程? 如果您与技术话题保持同步(如果您正在阅读此博客,我想您会这样做),那么您可能听说过Facebook 刚刚向公众发布 ...

最新文章

  1. JavaScript 变量的生存期
  2. 现实生活中常用的动态路由—OSPF路由重分发
  3. 【活动】侬好上海,Microsoft Reactor来啦
  4. python调用ping命令_在Python中调用Ping命令,批量IP的方法
  5. Kudu : 插入无法获取主键冲突的异常
  6. suse linux修改ftp端口,suse Linux系统下的网络设置(ftp telnet xmanager)
  7. 侧方、s弯道、坡起相关
  8. selenium webdriver 通信过程
  9. Invalid maximum heap size: -Xmx
  10. Python转换图片大小格式
  11. 微信新表情真的太骚了!!
  12. 如何设置word为只读
  13. 凹入法写入指定目录至文档,并计算目录大小
  14. 检查两个时间段是否有时间重叠(允许重叠一部分时间不算重叠)
  15. 在vue中获取dom元素
  16. 解决H5在移动端overflow:scroll滚动条默认不显示和滚动后消失的问题
  17. Xilinx FIFO使用小结
  18. 达内 Java 全套教程 NPM、PYPI、DockerHub 备
  19. 读《倚天屠龙记》小感
  20. 2021最新Navicat15下载安装包

热门文章

  1. 旅行app(游记、攻略、私人定制) | 顺便游旅行H5移动端实例
  2. x265中计算RD Cost的几种方式
  3. 重构:运用Java反射加多态 “干掉” switch
  4. CMU15445 2020 B+TREE简单记录
  5. 【毕业设计1】基于单片机的智能灌溉系统 - 物联网 嵌入式 stm32 c51
  6. 基于KPCA 和 STFT 非侵入式负荷监控(Matlab代码实现)
  7. 移植caffe到hi3519
  8. 局域网安全之ARP攻击
  9. 教育:时间的质量等于生命的质量
  10. 2.4G无线音频模块方案测评之RODE录音麦