需要的功能:
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;
}
}