public class GuessNumberGame {
/**
* 此方法是获取待猜的数据
*
* @return
*/
public static int getGuessNum() {
// 创建Random对象,主要用于产生随机数
Random rd = new Random();
// 调用rd的nextInt方法产生100以内的一个随机数
int guessNum = rd.nextInt(100);
// 返回当前产生的随机数
return guessNum;
}
/**
* 获取键盘录入的数据
*
* @param args
*/
public static int getKeyNum(){
//将键盘获取s的数据转成int类型数据
String keyStr= getKeyStr("请输入您要猜的数据:");
int keyNum;
//使用循环获取输入的数据,直到数据的数据满足条件循环才会停止
while(true){
//使用try catch方式判断用户输入的数据是否为数字,若非数字,再catch中继续调用获取键盘录入方法
try{
//使用Integer的parseInt方法将输入的转换成int类型数据
keyNum = Integer.parseInt(keyStr);
//判断输入的数据是否在0-100之间
if(keyNum<0 || keyNum>100){
System.out.println("请输入1-100之间的数据");
keyStr= getKeyStr("请输入您要猜的数据:");
}
break;
}catch(NumberFormatException e){
//捕获到异常后,给出提示信息,并重新调用获取键盘录入功能,重新获取录入的数据
System.out.println("输入数据非法,请重新输入数据");
keyStr= getKeyStr("请输入您要猜的数据:");
}
}
return keyNum;
}
/*
* 用于读取键盘录入的数据,将获取到的数据返回
*/
private static String getKeyStr(String str) {
// 创建Scanner对象获取键盘录入的数据
Scanner sc = new Scanner(System.in);
//提示请输入数据
System.out.println(str);
// 获取键盘录入的数据
String keyStr = sc.next();
//返回键盘录入的数据
return keyStr;
}
/**
* 开始猜数字,首先获取随机数和键盘录入数据
* 判断输入的数据和随机数的大小关系。
* 给出提示信息,根据提示信息,可以重新输入数据
*/
public static void startGuess(){
// 获取到随机数
int guessNum = getGuessNum();
// 获取到键盘录入的数字
int keyNum = getKeyNum();
// 循环判断输入的数据和随机数的关系,只要不相等,循环就成立
while(guessNum != keyNum){
if(guessNum > keyNum){ // 键盘录入数据偏小
System.out.println("输入的数据太小了!");
// 从新获取键盘录入数据
keyNum = getKeyNum();
}else{ // 键盘录入数据偏大
System.out.println("输入的数据太大了!");
keyNum = getKeyNum();
}
}
// 程序走到这里,说明循环已经结束,而循环结束的条件就是随机数和录入的数据相等,
// 即就是猜中了
System.out.println("恭喜您猜中了,您非常聪明了!");
}
/**
* 猜中后提示是否还要继续玩
* @return
*/
public static boolean reGame(){
// 调用获取键盘录入数据方法,获取选择的是继续玩,还是退出游戏
String str = getKeyStr("您还想再玩一把吗?输入YES继续,输入其他任意字符退出游戏");
// 判断输入的是继续玩,还是退出
if(str.equalsIgnoreCase("yes")){
// 选项的是继续玩返回真值
return true;
}
// 程序走到这里,说明上面的判断不成立,即选择了退出游戏
return false;
}
// 游戏运行入口,即启动游戏
public static void main(String[] args) {
System.out.println("==================欢迎玩猜数字游戏==================");
startGuess();
while(reGame()){
startGuess();
}
System.out.println("==================游戏结束==================");
}
}
|