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

最后这两句要怎么写才正确


if(numbers!='')//假如这里是+5 -1 +2
    {
        let parts = numbers.split(' ');
 
        for (let i = 0; i < parts.length; i++) {
            let part = parts[i];
            let operator = part[0];//获取运算符
            let number=part.slice(1);//获取数字
            
            if(operator==='+')
            {
                result=result+number;
            }
            else
            {
                result=result-number;
            }
            
            // 每隔一定时间显示数字和运算符
            setTimeout(() => {
                if(i>0)
                {
                    number=operator+number;
                }
                displayQuestion(number, '', '');//通过单独获取符号和数字,这里显示正确了,后面有+号了
            }, (i + 1) * shijian * 1000);
        }
        
        result += operator === '+' ? number : -number;//最后这两句要怎么写才正确
        question += (i > 0 ? ' ' : '') + operator + number;//最后这两句要怎么写才正确
    }
  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-06-13 11:21
    关注

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

    为了确保在处理完所有部分后resultquestion变量能正确反映最终的计算结果和表达式,我们可以调整一下代码逻辑。当前的问题在于最后一部分的处理方式:它需要根据其运算符决定是否添加或减去number,并且正确地构建question字符串。

    下面是一种修改后的代码实现,它会确保resultquestion在循环结束后仍然准确无误:

    if(numbers != '') {
        let parts = numbers.split(' ');
        let result = 0;
        let question = '';
    
        for (let i = 0; i < parts.length; i++) {
            let part = parts[i];
            let operator = part[0];
            let number = parseInt(part.slice(1), 10);
    
            if (i > 0) {
                result += operator === '+' ? number : -number;
                question += ' ' + operator + number;
            } else {
                result = number;
                question = operator + number;
            }
    
            // 每隔一定时间显示数字和运算符
            setTimeout(() => {
                document.getElementById('display').innerText = question;
            }, (i + 1) * shijian * 1000);
        }
    }
    

    关键点:

    • 初始化result为0和question为空字符串。
    • 在循环中,首先检查索引i是否大于0。如果是,则意味着我们正在处理除了第一个之外的部分,此时可以安全地更新resultquestion
    • 如果是第一个部分(即i === 0),则将number赋值给result,并将operator + number赋值给question
    • 使用parseInt确保number是一个整数。
    • setTimeout函数被用来每隔一定时间更新显示的question,这假定页面上有一个id为display的元素用于显示内容。

    这样修改后,无论输入的字符串如何变化,resultquestion都将始终正确反映整个表达式的计算结果和表达式本身。

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

报告相同问题?

问题事件

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