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

Node.js使用readline提问时无法解析随机数变量问题求助

问题根源

两个问题导致你遇到的现象:

  1. 字符串插值语法使用错误:JavaScript 中只有用*反引号(,键盘左上角与~同按键的符号)*包裹的模板字符串,才能识别${变量名}的插值替换规则。你用单引号'包裹提问文本,里面的${num1}、${num2}`会被当成普通字符串直接输出,不会读取变量值替换。
  2. 回调逻辑缺失:你在rl.question的回调函数里只写了console.log(userInput),没有做答案计算、输入校验的逻辑,自然只会把用户输入的内容原样打印出来。
修正后完整代码
// 引入readline模块并初始化交互接口
const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

// 生成1-10区间的随机整数
let num1 = Math.floor((Math.random() * 10) + 1); 
let num2 = Math.floor((Math.random() * 10) + 1);

// 注意:提问字符串外层用反引号包裹,不是单引号
rl.question(`What is ${num1} + ${num2}? ` , (userInput) => {
    const correctAnswer = num1 + num2;
    // 去除输入首尾空格后转为数字
    const userAnswer = Number(userInput.trim());
    if (userAnswer === correctAnswer) {
        console.log('回答正确!');
    } else {
        console.log(`回答错误,正确答案是${correctAnswer}`);
    }
    // 关闭交互接口,避免程序运行后不退出
    rl.close();
});
关键改动说明
  • 补全了readline交互接口的初始化、回答后关闭接口的逻辑,保证程序能正常启动、运行结束后自动退出
  • 将提问文本的外层包裹符号从单引号替换为反引号,修复随机数变量不替换的问题
  • 新增正确答案计算、输入格式转换、正误判断的逻辑,实现加法答题的核心功能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:27:26