Java实现猜数字游戏 简明 易懂 完整代码

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;
}
  • 80
    点赞
  • 403
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值