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

需要的功能:
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;	     			
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值