Java开发猜数字游戏如何实现循环接收输入直到猜对为止
问题原因
原代码的while循环内部只有打印提示的逻辑,没有重新读取用户新输入的代码,input变量的值永远停留在第一次输入的结果,只要第一次没猜对,就会进入死循环无限打印"Guess again",自然不会接收新输入。
修正后的完整代码
import java.util.Scanner; // 类名首字母大写符合Java编码规范 public class Main { public static void main(String[] args) { Scanner reader = new Scanner(System.in); // 原test类同步调整首字母大写,保留原有随机数生成逻辑 Test random = new Test(); System.out.print("请输入最小值: "); int min = reader.nextInt(); System.out.print("请输入最大值: "); int max = reader.nextInt(); int answer = random.getRandom(min, max); System.out.print("请输入你猜的数字,范围在" + min + "-" + max + "之间: "); int input = reader.nextInt(); while(input != answer) { // 大小提示逻辑可按需删除 if(input > answer) { System.out.println("你猜的数字太大了"); } else { System.out.println("你猜的数字太小了"); } System.out.println("请重新猜测:"); // 关键修改:循环内重新读取用户新输入更新input变量 input = reader.nextInt(); } // 跳出循环即代表输入和答案匹配,无需额外判断 System.out.println("恭喜你猜对了!"); // 关闭Scanner避免资源泄漏 reader.close(); } }
核心修改点
- 必须在while循环内部新增
input = reader.nextInt();语句,每次猜错后都读取用户新的输入更新input变量的值,保证每次循环判断的是用户最新的输入结果 - 原代码中循环外的
if(input == answer)判断是冗余的,只要跳出while循环就代表输入值和答案完全匹配,可以直接打印猜对提示 - 可额外补充猜大猜小的提示逻辑,优化游戏使用体验
- 代码末尾新增
reader.close()语句,关闭Scanner避免JVM资源泄漏 - 注意Java规范中类名首字母需大写,原代码中的
main类、test类命名不符合规范,建议调整为Main、Test
内容的提问来源于stack exchange,提问作者ntg_908
相关产品推荐
相关产品推荐

