Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS for循环不';我不能正常工作。获取不准确的值作为';总计';_Javascript_Arrays_Loops_For Loop_While Loop - Fatal编程技术网

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;

或者,由于您将所有输入的数字保留在一个数组中,因此可以等到它们全部输入完毕,然后在该数组上循环,然后将它们相加。但是,在每个数字后面都没有小计显示。

请发布一些示例,说明您输入了什么,得到了什么,以及预期的总数。马克,非常感谢您澄清了一切,很抱歉问了这个愚蠢的问题,我的错…完成了…但我真的不明白,为什么会这样-为什么会在整个数组中迭代?