Java完成简单猜数字游戏
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java完成简单猜数字游戏相关的知识,希望对你有一定的参考价值。
猜数字游戏v1.0 实现了自定义区间的游戏玩法,并能在游戏结束后继续下一轮,这是其他程序没有兼顾的,希望有帮助,最后也希望有人愿意帮我解决代码优化的问题,谢谢。
/*需求:
*1. 完成一个猜数字游戏,数据区间由玩家自定义,游戏开始后针对玩家输入的值,给出一个缩小版的指导区间;
*2. 结束一轮游戏后,玩家可以选择是否继续玩耍;
*思路:
*1. 创建一个指定区间int类型的随机数,区间由玩家指定;
*2. 针对玩家猜的数据,比较后给出判断,大了、小了可以给出一个指导区间,直到猜对为止,记录猜的次数;
*3. 游戏结束后,询问玩家是否继续;
*步骤:
*1. 利用Scanner,由玩家创建游戏区间;
*2. 利用while中嵌套for,对结果作出判断,并给出一个新的指导区间;
*3. 游戏结束后,提示玩家输入yes字符串继续游戏;
*=========新人求优化=========
*1. 程序中,获取随机数部分是重复的,如果有大神能写一个getRandom获取随机数,并能继续使用min、max的值就更好了;
*2. while循环中,对输入数据超出边界时有一个if判断,此处应该有更简洁的方法。
*=========菜鸟求帮助=========
*/
1 import java.util.*; 2 public class GuessGame { 3 public static void main(String[] args) 4 { 5 //确认竞猜数据的下限 6 Scanner guessMin = new Scanner(System.in); 7 System.out.println("欢迎来到猜数字游戏v1.0!\n请输入你要竞猜数据的下限:"); 8 int min = guessMin.nextInt(); 9 //确认竞猜数据的上限 10 Scanner guessMax = new Scanner(System.in); 11 System.out.println("请输入你要竞猜数据的上限:"); 12 int max = guessMax.nextInt(); 13 //产生一个指定区间的随机数,Math.random()生成一个[0,1)之间的double类型的随机数。 14 int givenNumber = (int)(Math.random()*(max-min+1)) + min; 15 //System.out.println("系统已生成的随机数:"+givenNumber);//测试时可取消注释 16 System.out.println("系统已生成一个[" + min + "," + max + "]区间的随机数,来竞猜吧!"); 17 //引入count,用来计算输入次数 18 int count = 0; 19 while (true) 20 { 21 //玩家输入猜想的数据 22 Scanner sc = new Scanner(System.in); 23 try 24 { 25 System.out.println("在这个给定区间,[" + min + "," + max + "]"+",请输入你所猜想的数据:"); 26 count++; 27 int guessNumber = sc.nextInt(); 28 //大于判断,将max-1的目的是为了更加精准范围 29 if (guessNumber > givenNumber) 30 { 31 //++++++++++++++ 32 //待优化,此处是针对输入值超出上限时的一个判断,避免误导玩家 33 if (guessNumber > max) 34 {} 35 else 36 {max = guessNumber-1;} 37 //++++++++++++++ 38 System.out.println("太可惜了,您在第" + count + "次猜大了,请继续:"); 39 } 40 //小于判断,将min+1的目的是为了更加精准范围 41 else if (guessNumber < givenNumber) 42 { 43 //++++++++++++++ 44 //待优化,此处是针对输入值超出下限时的一个判断,避免误导玩家 45 if (guessNumber < min) 46 {} 47 else 48 {min = guessNumber+1;} 49 //++++++++++++++ 50 System.out.println("太可惜了,您在第" + count + "次猜小了,请继续:"); 51 } 52 //等于判断,并询问是否继续游戏 53 else 54 { 55 System.out.println("太赞了,您花了" + count + "次就猜中了这个随机数," + givenNumber + "。"); 56 //是否继续游戏 57 System.out.println("\n输入yes继续挑战,按任意键退出。\n"); 58 sc = new Scanner(System.in); 59 String str = sc.nextLine(); 60 if ("yes".equals(str)) 61 { 62 //++++++++++++++ 63 //待优化,重写赋值随机数,如果能写一个getRandom获取随机数,并能继续使用min、max的值就更好了。 64 //确认竞猜数据的下限 65 Scanner _guessMin = new Scanner(System.in); 66 System.out.println("欢迎来到猜数字游戏v1.0!\n请输入你要竞猜数据的下限:"); 67 min = _guessMin.nextInt(); 68 //确认竞猜数据的上限 69 Scanner _guessMax = new Scanner(System.in); 70 System.out.println("请输入你要竞猜数据的上限:"); 71 max = _guessMax.nextInt(); 72 //产生一个指定区间的随机数,Math.random()生成一个[0,1)之间的double类型的随机数。 73 givenNumber = (int)(Math.random()*(max-min+1)) + min; 74 //System.out.println("系统已生成的随机数:"+givenNumber);//测试时可取消注释 75 System.out.println("系统已生成一个[" + min + "," + max + "]区间的随机数,莱竞猜吧!"); 76 //引入count,用来计算输入次数 77 count = 0; 78 //++++++++++++++ 79 } 80 else 81 { 82 System.out.println("欢迎使用猜数字游戏v1.0,再见!"); 83 break; 84 } 85 } 86 } 87 catch (InputMismatchException e) 88 { 89 System.out.println("你输入的数据有误,请重新输入一个整数。"); 90 } 91 } 92 } 93 }
以上是关于Java完成简单猜数字游戏的主要内容,如果未能解决你的问题,请参考以下文章