1 游戏规则
系统自动生成一个随机整数(1- 100),然后由用户输入一个猜测的数字,如果输入数字比生成数大,则提示“猜大了”;如果输入数字比生成数小,则提示“猜小了”;如果输入数字与生成数一样,则提示“猜对了”。
2 生成随机数
Random random = new Random(); //创建对象
int num = random.nextInt(100); //生成随机整数
Random() 的括号中,可以填写参数seed,即随机种子。
因为在计算机中生成随机数,是通过给定一个初始值,将其套入一个数学公式生成的,是“伪随机”。设置随机种子就固定了初始值,可以使每次随机出的数一样,若是不设置则默认为系统自动生成。
random.nextInt(100)中的参数,bound:100,表示生成随机数边界为100,从0-99 共100个整数。因为题目要求1-100,可以在后面+1从而变成生成1-100 共100个整数。
int num = random.nextInt(100) + 1;
小技巧:
(1) 在不明白函数方法的定义时,可以将鼠标放到相应位置,然后按ctrl + 鼠标左键,查看文档注释学习使用。
(2) 可以在Java API文档中查找学习,Oracle官网的文档:
API官方文档
3 用户猜数
因为猜测是需要不断进行,直到猜对停止,所以需要用循环来实现。
Scanner scanner = new Scanner(System.in);
while(true){
System.out.println("请输入猜测的数:");
int toGuess = scanner.nextInt();
创建scanner的语句放在循环内外都可以,但是放在里面效率会低一些,因为每次循环都会创建对象;放在外面,在循环中可以通过scanner.nextInt() 的方式读取。
4 判定猜测正误
if(toGuess>num){
System.out.println("猜大了");
} else if(toGuess<num){
System.out.println("猜小了");
} else{
System.out.println("猜对了!");
break;
}
}
若是猜测正确,不能忘记break 跳出循环结束。
5 完整代码
import java.util.Random;
import java.util.Scanner;
public class Test1_6 {
public static void main(String[] args) {
Random random = new Random();
int num = random.nextInt(100)+1;
Scanner scanner = new Scanner(System.in);
while(true){
System.out.println("请输入猜测的数:");
int toGuess = scanner.nextInt();
if(toGuess>num){
System.out.println("猜大了");
} else if(toGuess<num){
System.out.println("猜小了");
} else{
System.out.println("猜对了!");
break;
}
}
}
}
6 运行结果
7 优化猜数字游戏
7.1 菜单模块
打印出一个选择菜单,供用户选择玩游戏或者退出
public static int menu() {
System.out.println("***********************");
System.out.println(" 1、play 0、exit ");
System.out.println("***********************");
System.out.println("请输入您的选择:");
Scanner scanner = new Scanner(System.in);
int choice = scanner.nextInt();
return choice;
}
7.2 游戏模块
public static void game() {
//1、生成随机数
Random random = new Random();
int toGuess = random.nextInt(100)+1;
//2、使用Scanner让用户能输入,猜测数,并给用户提示
//Scanner创建在外面比在里面效率要稍高一些
Scanner scanner = new Scanner(System.in);
while(true){
System.out.println("请输入你猜测的数:");
int num = scanner.nextInt();
if(num>toGuess){
System.out.println("猜大了");
}else if(num<toGuess){
System.out.println("猜小了");
}else {
System.out.println("恭喜你,猜对了!");
break;
}
}
}
7.3 主控制模块
通过判断用户的选择来选择执行程序
public static void guessNumberGame() {
while(true){
int choice = menu();
if(choice == 1){
game();
}else if(choice == 0){
System.out.println("白白~");
break;
}else{
System.out.println("输入错误,请重试...");
}
}
}
7.4 完整代码
public static void main(String[] args) {
guessNumberGame();
}
public static void guessNumberGame() {
while(true){
int choice = menu();
if(choice == 1){
game();
}else if(choice == 0){
System.out.println("白白~");
break;
}else{
System.out.println("输入错误,请重试...");
}
}
}
public static void game() {
Random random = new Random();
int toGuess = random.nextInt(100)+1;
Scanner scanner = new Scanner(System.in);
while(true){
System.out.println("请输入你猜测的数:");
int num = scanner.nextInt();
if(num>toGuess){
System.out.println("猜大了");
}else if(num<toGuess){
System.out.println("猜小了");
}else {
System.out.println("恭喜你,猜对了!");
break;
}
}
}
public static int menu() {
System.out.println("***********************");
System.out.println(" 1、play 0、exit ");
System.out.println("***********************");
System.out.println("请输入您的选择:");
Scanner scanner = new Scanner(System.in);
int choice = scanner.nextInt();
return choice;
}