如何在Java猜数字程序中实现循环接收用户输入?
Java猜数字程序循环输入修复方案
原程序的核心问题是缺少循环逻辑,仅执行了一次输入判断。以下是修改后的完整代码,实现持续接收用户输入直到猜中正确数值:
import java.util.Scanner; class GuessNumber { // 生成指定范围内的随机数 public int getRandomNumber(int min, int max) { return (int) ((Math.random() * (max - min)) + min); } // 根据猜测结果给出提示 public void giveHint(int guess, int target) { if (guess < target) { System.out.println("选更大的数字"); } else if (guess > target) { System.out.println("选更小的数字"); } } // 返回猜中提示 public String getCorrectMessage() { return "猜对了!"; } } public class GuessTheNumber { public static void main(String[] args) { Scanner sc = new Scanner(System.in); GuessNumber game = new GuessNumber(); // 先获取范围,生成目标数字 System.out.println("请输入最小值和最大值:"); int min = sc.nextInt(); int max = sc.nextInt(); int target = game.getRandomNumber(min, max); // 可选:注释掉下面这行,隐藏目标数字让用户真的猜 // System.out.println("目标数字:" + target); int guess; // 循环接收输入直到猜中 do { System.out.println("请输入你的猜测:"); guess = sc.nextInt(); game.giveHint(guess, target); } while (guess != target); // 猜中后输出提示 System.out.println(game.getCorrectMessage()); sc.close(); } }
关键修改说明
- 调整输入流程:先让用户输入范围,生成目标随机数后再开始猜测,符合正常游戏逻辑。
- 添加
do-while循环:保证至少执行一次猜测,每次循环接收新的输入,直到猜测值等于目标值才退出循环。 - 优化方法职责:将原
userinput方法改为giveHint,专注于输出提示信息,不再返回冗余字符串;方法和类名遵循Java大驼峰命名规范。 - 资源清理:最后调用
sc.close()关闭Scanner,避免资源泄漏。
内容的提问来源于stack exchange,提问作者Marauders
相关产品推荐
相关产品推荐

