Java面向对象编程练习题:猜数字游戏
项目名称:猜数字游戏
项目说明:定义一个类,有一个成员变量初值为100。定义一个测试类对这个类的成员变量进行猜测,如果大了,则提示大了,小了则提示小了,游戏循环继续,若相等则提示猜测成功,游戏结束。
public class GuessNumber { private int num; public GuessNumber() { this.num = 100; } public Boolean guessNumber(int num){ if(num > this.num){ System.out.println("输入的数字大了,请重新输入!"); return false; }else if(num < this.num){ System.out.println("输入的数字小了,请重新输入!"); return false; }else { System.out.println("猜对了,游戏结束!"); return true; } } }
定义测试类
import java.util.Scanner; public class Application { public static void main(String[] args) { GuessNumber guessNumber = new GuessNumber(); Scanner scanner = new Scanner(System.in); System.out.println("开始猜数字游戏,请输入数字:"); while (true){ int numInput = scanner.nextInt(); Boolean result = guessNumber.guessNumber(numInput); if (result){ break; } } } }
测试结果:

改进一:
由于初始变量值是预设的,我们已经知道了,这样猜测的话,就没有什么成就感,我们可以把初始值用随机数来定义。
public class GuessNumber { private int num; public GuessNumber() { this.num = (int)(Math.random() * 100); } public Boolean guessNumber(int num){ if(num > this.num){ System.out.println("输入的数字大了,请重新输入!"); return false; }else if(num < this.num){ System.out.println("输入的数字小了,请重新输入!"); return false; }else { System.out.println("猜对了,游戏结束!"); return true; } } }
测试结果:


改进二:既然是随机数,那么我们是不是可以尝试下跟电脑比赛了,每一轮人输入一次数字,电脑自动随机一个数,看谁猜测的对。
定义3个类和1个测试类
Number类:存放系统随机给的数字
UserGuessNumber:用户猜测类
BotGuessNumber:机器(电脑)猜测类
Application:测试类
Number类
public class Number { private int num; public Number() { this.num = (int)(Math.random() * 100); } public int getNum() { return num; } }
UserGuessNumber类
public class UserGuessNumber { public Boolean guessStart(int numInput, int key){ if(numInput > key){ System.out.println("您输入的数字大了!"); return false; }else if(numInput < key){ System.out.println("您输入的数字小了!"); return false; }else { System.out.println("您猜对了!"); return true; } } }
BotGuessNumber类
public class BotGuessNumber { int minNum;//随机数的最小值 int maxNum;//随机数的最大值 int num; public BotGuessNumber() { this.minNum = 0; this.maxNum = 100; this.num = (int)(Math.random() * this.maxNum + this.minNum); } public int getNum() { return (int)(Math.random() * (this.maxNum - this.minNum) + this.minNum); } public Boolean guessStart(int numInput, int key){ System.out.print("电脑给出的数字是:"+numInput); if(numInput > key){ this.maxNum = numInput; System.out.print(",输入的数字大了!"); System.out.println("电脑将数字范围调整为:[" + this.minNum + " "+ this.maxNum+"]"); return false; }else if(numInput < key){ this.minNum = numInput; System.out.print(",输入的数字小了!"); System.out.println("电脑将数字范围调整为:[" + this.minNum + " "+ this.maxNum+"]"); return false; }else { System.out.println(",猜对了!"); return true; } } }
测试类:
import java.util.Scanner; public class Application { public static void main(String[] args) { BotGuessNumber botGuessNumber = new BotGuessNumber(); UserGuessNumber userGuessNumber = new UserGuessNumber(); Number number = new Number(); Scanner scanner = new Scanner(System.in); System.out.println("开始进行猜数字游戏....:"); while (true){ System.out.print("请输入数字:"); int userNumInput = scanner.nextInt(); Boolean userGuessResult = userGuessNumber.guessStart(userNumInput,number.getNum()); Boolean botGuessResult = botGuessNumber.guessStart(botGuessNumber.getNum(),number.getNum()); if (botGuessResult && userGuessResult){ System.out.println("您和电脑都猜对了!游戏结束!"); break; }else if(botGuessResult){ System.out.println("电脑猜对了!游戏结束!"); break; }else if(userGuessResult){ System.out.println("您猜对了!游戏结束!"); break; } System.out.println("=============================="); } } }
测试结果:

当然,可以进一步延伸,设计成多个电脑同事猜数字,看谁先猜中。

浙公网安备 33010602011771号