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

Node.js猜数字游戏故障排查请求:程序无法正常运行

猜数字游戏故障排查与修复

核心故障原因

  • 类型不匹配导致比较逻辑失效
    Math.random() * 100调用toFixed(0)后返回的是字符串类型,prompt获取的用户输入同样是字符串。直接用>或<比较字符串会按字典序(比如"10"会被判定小于"2"),完全不符合数值比较的预期。

  • 循环逻辑不完整
    当前代码只在第一次判断失败后调用一次sprawdzacz,如果第二次输入仍然错误,程序就会终止,无法持续让用户猜测直到猜对。而且函数内新获取的用户输入没有再次进入判断流程,直接返回false,等于白输入。

  • 相等判断的变量引用错误
    最后一个判断猜对的if语句,错误使用了全局变量wylosowanaLiczba和liczbaUzytkownika,而非函数的参数wylosowanaLiczbaxx和liczbaUzytkownikaxx。当函数内更新了局部输入变量时,全局变量不会同步,导致即使输入正确也可能无法触发成功提示。

  • 随机数生成范围不准确
    Math.random() * 100生成的是0到99.999...的浮点数,toFixed(0)后最大只能得到99,无法生成100,不符合需求中的0-100范围。

修复后的代码

const prompt = require('prompt-sync')({ sigInt: true });

// 生成0-100的整数随机数
let wylosowanaLiczba = Math.floor(Math.random() * 101);

function sprawdzacz(wylosowanaLiczba, liczbaUzytkownika) {
    // 将用户输入转为整数
    const userNum = parseInt(liczbaUzytkownika, 10);
    
    if (isNaN(userNum)) {
        console.log('\n请输入有效的数字!\n');
        return false;
    }

    if (wylosowanaLiczba > userNum) {
        console.log('\nWylosowana liczba jest większa niż twoja liczba!\n');
        return false;
    } else if (wylosowanaLiczba < userNum) {
        console.log('\nWylosowana liczba jest mniejsza niż twoja liczba!\n');
        return false;
    } else {
        console.log('\n\nBRAWO, WYGRALES\n\n');
        return true;
    }
}

// 循环直到猜对
let isCorrect = false;
while (!isCorrect) {
    let liczbaUzytkownika = prompt('Podaj liczbę od 0 do 100: ');
    isCorrect = sprawdzacz(wylosowanaLiczba, liczbaUzytkownika);
}

修复说明

  1. 统一数值类型:用Math.floor(Math.random() * 101)直接生成整数类型的随机数,用户输入用parseInt转为整数,确保比较是数值层面的。
  2. 完善循环逻辑:使用while循环持续获取用户输入并校验,直到猜对为止。
  3. 修正变量引用:函数内统一使用参数和局部变量,避免全局变量的干扰。
  4. 增加输入合法性校验:判断用户输入是否为有效数字,避免非数字输入导致的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:10:56