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

使用Java Random包实现猜数字游戏异常:猜对后无正确提示

猜数字游戏BUG排查:猜对后无法触发正确提示

你编写的猜数字游戏中,Random已正常生成数字,但猜对时程序持续输出“More than that”,无法触发“That's right!”提示。你的代码如下:

import java.util.Scanner;
import java.util.Random; 
public class Main {
    static Scanner read = new Scanner(System.in);
    public static void main(String[] args) {
        int randomInt = new Random().nextInt(1000);
        int userInput = -1;
        System.out.println("I guessed a number\nYour turn: ");

        while (randomInt != userInput) {
            userInput = read.nextInt();
            if (randomInt > userInput) {
                System.out.println("Less than it");
            } else if (randomInt < userInput){
                System.out.println("More than that");
            }
        }
            System.out.println("That's right!");
        }
    }

问题分析

从代码逻辑上看,当前写法理论上可正常运行:当输入数字等于随机数时,randomInt != userInput不成立,循环退出后会输出正确提示。但你遇到的问题大概率是以下情况之一:

  • 实际运行代码与提供的不一致:比如误将随机数生成代码new Random().nextInt(1000)放在while循环内部,导致每次循环生成新的随机数,永远无法猜中当前循环的随机数;若新生成的随机数始终小于你的输入,就会持续输出“More than that”。
  • 调试与运行时随机数不符:调试断点会改变程序运行时间戳,导致Random生成的数字与实际运行时不同,你误以为输入的是正确数字,但实际并未匹配。
  • Scanner读取异常:若输入非整数内容,read.nextInt()会抛出InputMismatchException,未被捕获时可能导致程序进入异常状态,出现不符合预期的输出。

修复方案

方案1:优化逻辑,明确处理猜对场景

改为无限循环,在猜对时直接跳出,逻辑更清晰,避免依赖循环条件判断:

import java.util.Scanner;
import java.util.Random; 
public class Main {
    static Scanner read = new Scanner(System.in);
    public static void main(String[] args) {
        int randomInt = new Random().nextInt(1000);
        System.out.println("I guessed a number\nYour turn: ");

        while (true) {
            int userInput = read.nextInt();
            if (randomInt > userInput) {
                System.out.println("Less than it");
            } else if (randomInt < userInput) {
                System.out.println("More than that");
            } else {
                System.out.println("That's right!");
                break; // 猜对后直接跳出循环
            }
        }
    }
}

验证方法:打印随机数确认

在生成随机数后添加打印语句,确认输入数字是否与随机数一致:

int randomInt = new Random().nextInt(1000);
System.out.println("Debug: 随机数为 " + randomInt); // 调试用,上线可删除

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 18:32:28