You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Java猜数字游戏实现正误反馈及可选提示功能?

修复后的Java猜数字游戏代码
import java.util.Scanner;

public class GuessingGame {
    public static void main(String[] args) {
        int number1 = (int)(Math.random() * 20);
        Scanner input = new Scanner(System.in);

        // 获取用户设置的生命数(改为int类型,避免循环逻辑错误)
        System.out.println("Welcome to the Guessing Game! I'll think of a number, and you guess what it is! How many lives do you want to have?");
        int lives = input.nextInt();
        input.nextLine(); // 读取换行符,避免后续读取字符串出错

        System.out.println("Great! You have " + lives + " attempts to guess correctly.");

        // 获取用户是否开启高低提示的选择
        System.out.print("Want to enable lower/higher hints? Type \"N\" or \"Y\".");
        String hintChoice = input.nextLine().trim().toUpperCase();
        boolean enableHints = hintChoice.equals("Y");

        System.out.println(" Let's begin!");

        int count = 0;
        while (count < lives) {
            System.out.println(" So... what number am I thinking of?");
            int userGuess = input.nextInt(); // 目标数字是int,直接用int接收猜测值
            count++;

            if (userGuess == number1) {
                System.out.println("Good job! You guessed it right in " + count + " attempts!");
                break; // 猜对后跳出循环,结束游戏
            } else {
                int remainingLives = lives - count;
                if (remainingLives > 0) {
                    System.out.print("Try again! You have " + remainingLives + " lives left.");
                    // 根据是否开启提示输出高低提示
                    if (enableHints) {
                        if (userGuess > number1) {
                            System.out.println(" Guess lower next time.");
                        } else {
                            System.out.println(" Guess higher next time.");
                        }
                    } else {
                        System.out.println();
                    }
                } else {
                    System.out.println("Game over! The number was " + number1 + ".");
                }
            }
        }
        input.close();
    }
}

问题修复说明

1. 解决无限循环问题

  • 原代码中lives是double类型,count是int类型,非整数生命数会导致循环逻辑偏差,将lives改为int类型,用input.nextInt()读取输入,确保生命数为整数。
  • 循环中count每次自增后,当count等于lives时,循环会正常终止,不会无限重复。

2. 实现猜大/猜小的正误反馈

  • 原if语句用逗号连接条件属于Java语法错误,改为分场景判断:
    • 猜测值等于目标数字:输出成功信息并通过break跳出循环,结束游戏。
    • 猜测值不等于目标数字:计算剩余生命数,提示重试,同时根据猜测值与目标数字的大小关系输出对应提示(若开启)。
  • 目标数字是int类型,将用户猜测值改为int接收,避免类型转换问题。

3. 实现可选高低提示功能

  • 用String hintChoice接收用户输入的Y/N,转换为大写后判断是否等于"Y",用boolean enableHints存储开关状态。
  • 用户猜错后,根据enableHints的值决定是否输出"猜大了/猜小了"的提示信息。

内容的提问来源于stack exchange,提问作者user21216319

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 20:25:16