如何为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
相关产品推荐
相关产品推荐

