Java小白练手项目—猜数字游戏

本文介绍了一个简单的猜数字游戏Java程序实现。游戏会在1到1000之间随机生成一个整数,玩家通过控制台输入猜测的数字,系统会根据大小给出提示。如果猜对,则询问玩家是否继续游戏。无论何时输入0都会重新开始新游戏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需要的功能:
1.随机生成一个1~1000之间的整数
2.用户每猜测一次,控制台提示大了,小了,对了
3.若猜对,宣布游戏结束,并询问用户是否继续开始新游戏
4.用户不论猜对与否,输入0都开始新游戏

public class GuessNumber {
	/*
	 * > 需要的功能:
	 * >1.随机生成一个1~1000之间的整数
	 * >2.用户每猜测一次,控制台提示大了,小了,对了
	 * >3.若猜对,宣布游戏结束,并询问用户是否继续开始新游戏
	 * >4.用户不论猜对与否,输入0都开始新游戏
	 */

	static String guessTrue = "客官真厉害,要不要再来一局呢?";
	static String guessBigger = "客官,有点大了哦~";
	static String guessSmaller = "客官,好像小了点耶~";
	static String oneMoreGame = "好的,这就开始~";
	static String noOneMoreGame = "客官,慢走不送";
	
	public static void main(String[] args) {
		
		Start();//开始游戏				
		ifOneMoreGame();//判断是否再来一局还是送客
		GetUserGuess.scanner.close();//函数结束再关闭!!!
	}

	private static void Start() {
		System.out.println("让我们开始愉快地玩耍吧");
		MatchResult(getRandom(),GetUserGuess.getUserGuess());
	}

	//获取随机数
	private static int getRandom() {
		int result = (int)(Math.random()*1000+1);
		return result;
	}
	
	//判断是否再来一局还是送客	
	private static void ifOneMoreGame() {
		boolean bl= GetUserGuess.scanner.nextInt()==0?true:false;	
		if (bl) {
			System.out.println(oneMoreGame);
			Start();
		}
		else System.out.println(noOneMoreGame);
	}

	//将用户输入值和随机值比较,是方法的核心
	private static void MatchResult(int result,int userGuess) {
	
		if (userGuess==0) {
			Start();
		}else if (result==userGuess) {
			System.out.println(guessTrue);			
		}
		else if (userGuess>result) {
			System.out.println(guessBigger);
			MatchResult(result,GetUserGuess.getUserGuess());
		}
		else {
			System.out.println(guessSmaller);
			MatchResult(result,GetUserGuess.getUserGuess());
		}
	}
}

辅助类:之所以不写成方法放在主类中,因为scanner类关闭后system.in也会关闭,无法再次打开,放在辅助类中方便debug
scanner的异常详情参见:http://www.cnblogs.com/qingyibusi/p/5812725.html

import java.util.Scanner;

public class GetUserGuess {
	
	static Scanner scanner = new Scanner(System.in);
	
	static int getUserGuess() {		
		
		/*
		*使用nextInt(),当输入double会抛异常java.util.InputMismatchException e
		*改用nextLine搭配NumberFormatException即可。
		*scanner.close();一定不能关闭,否则会关闭system.in;system.in关闭后不能被打开,再调用scanner会报错
		*/		
		System.out.println("客官您猜是几呢:");
				
		int userGuess=0;
		String exceptionCheck=null;
		//2017.3.1更,其实用(int)scanner.nextDouble()就好了,这样写大费周折

		do{		
			try {
				userGuess = Integer.parseInt(scanner.nextLine().trim());
				break;
			} catch (java.lang.NumberFormatException e) {
				System.out.println("客官请重新输入,不要再带小数点了:");
				exceptionCheck=e.toString();
			}
		}while(exceptionCheck != null);//一定要加;不然会报错没有返回值

		return userGuess;	     			
	}
}
Java 中,“猜数字”通常是指一种简单的游戏程序,其核心思想是由计算机生成一个随机,然后让用户尝试测这个数字是多少。每次用户输入一个测值后,程序会告诉用户他们得是否正确、太高还是太低,并给出提示直到最终对为止。 以下是实现该游戏的基本步骤: 1. **导入必要的包**:为了能够利用系统提供的随机生成功能以及处理用户的键盘输入等操作,需要先引入相关的类库如`java.util.Scanner`用于读取玩家输入,`java.util.Random`则用来创建目标值; 2. **设置随机范围并初始化变量**:确定所要让玩家去推测的那个整型据的具体区间(例如从0到100之间),同时也要准备记录下实际产生的秘密号码; 3. **获取用户输入并与标准答案比较大小**:通过循环结构不断请求新建议直至匹配成功,在每一轮迭代过程中都需要把当前测试结果反馈给参与者以便调整后续决策方向;如果估计偏大就通知“太大了”,反之则是“太小啦”。 4. 当两者相等即表明获胜条件达成,则结束整个流程并向屏幕打印祝贺信息等内容。 下面是一个简化的例子代码片段展示如何构建这样一个游戏应用: ```java import java.util.Random; import java.util.Scanner; public class GuessNumberGame { public static void main(String[] args) { Random rand = new Random(); int numberToGuess = rand.nextInt(100)+1; // 设置待寻觅的目标处于闭合集[1,100]内 Scanner scnr = new Scanner(System.in); System.out.println("我已经想好了一个介于 1 到 100 的正整数..."); boolean hasGuessedCorrectly=false; while(!hasGuessedCorrectly){ System.out.print("\n请输入您的预测:"); if(scnr.hasNextInt()) { int guess=scnr.nextInt(); if(guess<numberToGuess) System.out.println("遗憾! 这个应该更大一些."); else if (guess>numberToGuess) System.out.println("抱歉! 实际上它更少一点哦~"); else{ System.out.printf("恭喜!!! 您准确找到了那个神秘数字 %d%n",numberToGuess ); hasGuessedCorrectly=true;} } else{System.out.println("无效的据形式,请确保只提交纯数字!"); scnr.next();} } } } ``` 这个游戏可以帮助初学者练习基础语法知识包括控制流语句的应用场景分析等方面技能点掌握情况检测工具之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值