Javascript JS for循环不';我不能正常工作。获取不准确的值作为';总计';
正在尝试计算数组项,但始终获取不正确的总值。有没有想过哪里会出错Javascript JS for循环不';我不能正常工作。获取不准确的值作为';总计';,javascript,arrays,loops,for-loop,while-loop,Javascript,Arrays,Loops,For Loop,While Loop,正在尝试计算数组项,但始终获取不正确的总值。有没有想过哪里会出错 let输入; 常量数=[]; 设total=0; //调试器; 做{ 输入=提示(“请输入数字”); 如果(输入===null){ 如果(number.length>0){ 警报(`Total is${Total}`); } 打破 } 输入=parseInt(输入); 日志(“输入:”,输入); 如果(isNaN(输入)){ 继续; }否则{ 数字。推送(输入); } for(const[i,v]of number.entrie
let输入;
常量数=[];
设total=0;
//调试器;
做{
输入=提示(“请输入数字”);
如果(输入===null){
如果(number.length>0){
警报(`Total is${Total}`);
}
打破
}
输入=parseInt(输入);
日志(“输入:”,输入);
如果(isNaN(输入)){
继续;
}否则{
数字。推送(输入);
}
for(const[i,v]of number.entries()){
总计=总计+v;
}
控制台日志(“总计:”,总计);
}while(输入!==null)代码>现在,在您添加到总数的任何步骤中,都是新的总数,而不是用旧的总数替换新的总数
你可以做:
let输入;
常量数=[];
设total=0;
//调试器;
做{
输入=提示(“请输入数字”);
如果(输入===null){
如果(number.length>0){
警报(`Total is${Total}`);
}
打破
}
输入=parseInt(输入);
日志(“输入:”,输入);
如果(isNaN(输入)){
继续;
}否则{
数字。推送(输入);
}
总数=0;
for(const[i,v]of number.entries()){
总计=总计+v;
}
控制台日志(“总计:”,总计);
}while(输入!==null)代码>您每次都在整个阵列上循环。因此,每个数字都会被添加到总数中,不仅是在您输入时,而且以后输入的每个数字都会被添加到总数中
假设您输入1作为第一个数字。然后,numbers
是[1]
,total
是0进入你的循环,它将1加到total
中,使其成为1。到目前为止,一切顺利
然后输入2。现在进入您的循环,我们将total
设为1,将numbers
设为[1,2]
,因此您的循环将1和2与之前的值1相加,并将total
设为4,而不是3
然后输入3。这次进入循环,总计
是4,数字
是[1,2,3]
。因此,循环在前4个循环的基础上增加1+2+3,现在total
是10,而不是6
基本上,不需要循环,因为total
已经包含了以前输入的所有数字。因此,您可以替换此循环:
for (const [i, v] of numbers.entries()) {
total = total + v;
}
用这一句话:
total = total + input;
也可以这样写:
total += input;
或者,由于您将所有输入的数字保留在一个数组中,因此可以等到它们全部输入完毕,然后在该数组上循环,然后将它们相加。但是,在每个数字后面都没有小计显示。请发布一些示例,说明您输入了什么,得到了什么,以及预期的总数。马克,非常感谢您澄清了一切,很抱歉问了这个愚蠢的问题,我的错…完成了…但我真的不明白,为什么会这样-为什么会在整个数组中迭代?