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;//最后这两句要怎么写才正确
}
最后这两句要怎么写才正确
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注引自免费微信小程序:皆我百晓生
为了确保在处理完所有部分后
result和question变量能正确反映最终的计算结果和表达式,我们可以调整一下代码逻辑。当前的问题在于最后一部分的处理方式:它需要根据其运算符决定是否添加或减去number,并且正确地构建question字符串。下面是一种修改后的代码实现,它会确保
result和question在循环结束后仍然准确无误: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。如果是,则意味着我们正在处理除了第一个之外的部分,此时可以安全地更新result和question。 - 如果是第一个部分(即
i === 0),则将number赋值给result,并将operator + number赋值给question。 - 使用
parseInt确保number是一个整数。 setTimeout函数被用来每隔一定时间更新显示的question,这假定页面上有一个id为display的元素用于显示内容。
这样修改后,无论输入的字符串如何变化,
result和question都将始终正确反映整个表达式的计算结果和表达式本身。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录- 初始化