weixin_41244451 2024-06-13 09:21 采纳率: 93.9%
浏览 0
已结题

运算结果对了,但是后面的+号还是没显示出来


if(numbers!='')
    {
        let parts = numbers.split(' ');
        let isFirstNumber = true; // 标记是否是第一个数字
 
        for (let i = 0; i < parts.length; i++) {
            let part = parts[i];
 
            if (!isNaN(part)) {
                let number = parseInt(part, 10);
                // 每隔一定时间显示数字和运算符
                setTimeout(() => {
                        displayQuestion(number,'','');
                }, (i + 1) * shijian * 1000);
                if (isFirstNumber) {
                    isFirstNumber = false;
                    result += number; // 处理第一个数字
                    question += number;
                } else {
                    if (lastOperator === '+') {
                        result += number;
                    } else if (lastOperator === '-') {
                        result -= number;
                    }
                    question += ' ' + lastOperator + number;
                }
            } else {
                lastOperator = part; // 更新运算符
            }
        }

运算结果对了,但是后面的+号还是没显示出来

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-13 09:21
    关注

    引自免费微信小程序:皆我百晓生

    从描述来看,问题在于question变量在更新时没有正确地在最后一个数字后添加运算符。为了解决这个问题,可以在循环结束后,单独处理最后一个运算符的添加。这可以通过在for循环结束后,检查lastOperator是否存在并将其添加到question字符串中实现。

    修改后的代码如下:

    if(numbers != '') {
        let parts = numbers.split(' ');
        let isFirstNumber = true; // 标记是否是第一个数字
    
        let lastOperator = ''; // 初始化运算符
        let question = ''; // 初始化问题字符串
        let result = 0; // 初始化结果
        const shijian = 1; // 假设的时间间隔,根据实际情况调整
    
        for (let i = 0; i < parts.length; i++) {
            let part = parts[i];
    
            if (!isNaN(part)) {
                let number = parseInt(part, 10);
    
                // 每隔一定时间显示数字和运算符
                setTimeout(() => {
                    displayQuestion(number, '', '');
                }, (i + 1) * shijian * 1000);
    
                if (isFirstNumber) {
                    isFirstNumber = false;
                    result += number; // 处理第一个数字
                    question += number;
                } else {
                    if (lastOperator === '+') {
                        result += number;
                    } else if (lastOperator === '-') {
                        result -= number;
                    }
                    question += ' ' + lastOperator + number;
                }
            } else {
                lastOperator = part; // 更新运算符
            }
        }
    
        // 在循环结束后,检查并添加最后一个运算符到问题字符串中
        if (lastOperator) {
            question += ' ' + lastOperator;
        }
    }
    

    这样,在所有数字都处理完毕后,question字符串将包含完整的数学表达式,包括最后一个运算符。请注意,这个解决方案假设numbers字符串总是以一个有效的运算符结束。如果这不是情况,可能需要进一步的逻辑来确保不会添加多余的运算符。

    如果numbers字符串不总是以运算符结尾,可以检查parts数组的最后一个元素是否是一个数字,如果不是,则添加运算符,如果是,则不添加。这样可以确保question字符串的格式始终正确。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月13日
  • 已采纳回答 6月13日
  • 创建了问题 6月13日

悬赏问题

  • ¥15 访问url时不会自动调用其 Servlet的doGet()
  • ¥15 用白鹭引擎开发棋牌游戏的前端为什么这么难找
  • ¥15 MATLAB解决问题
  • ¥35 哪位专业人士知道这是什么原件吗?哪里可以买到?
  • ¥15 关于#c##的问题:treenode反序列化后获取不到上一节点和下一节点,Fullpath和Handle报错
  • ¥15 一部手机能否同时用不同的app进入不同的直播间?
  • ¥15 没输出运行不了什么问题
  • ¥20 输入import torch显示Intel MKL FATAL ERROR,系统驱动1%,: Cannot load mkl_intel_thread.dll.
  • ¥15 点云密度大则包围盒小
  • ¥15 nginx使用nfs进行服务器的数据共享