我正在尝试接受用户输入的数字。将这些数字存储在数组中,然后将数组中的所有值相加以获得总数。我正在使用数字1-7进行测试。 我打印数组的输出,我得到:
1,2,3,4,5,6,7
返回所以似乎将数据存储在数组中是有效的。但是,当我尝试在数组中添加值时,我得到:
01234567
这使得它看起来像功能只是将数字推到一起。我觉得我错过了一些非常明显的东西,但我无法弄清楚它是什么。任何帮助,将不胜感激。
var again = "no";
var SIZE = 7;
var pints = [];
var totalPints = 0;
var averagePints = 0;
var highPints = 0;
var lowPints = 0;
getPints(pints[SIZE]);
getTotal(pints[SIZE]);
println(pints);
println(totalPints);
function getPints()
{
counter = 0;
while (counter < 7)
{
pints[counter] = prompt("Enter the number of pints");
counter = counter + 1;
}
}
function getTotal()
{
counter = 0;
totalPints = 0
for (var counter = 0; counter < 7; counter++)
{
totalPints += pints[counter]
}
}
答案 0 :(得分:0)
您的数组包含字符串而不是整数值,而不是
totalPints += pints[counter];
尝试使用类似的东西 -
totalPints += parseInt(pints[counter], 10);
答案 1 :(得分:0)
这种情况会发生,因为每个数字都是字符串而不是数字。变化:
pints[counter] = prompt("Enter the number of pints");
为:
pints[counter] = +prompt("Enter the number of pints");
将值转换为数字,以便从+
运算符中获取而不是连接。
答案 2 :(得分:0)
您可以使用parseInt
转换pints
这样的值
totalPints += parseInt(pints[counter], 10);
你不必像这样硬编码长度
for (var counter = 0; counter < 7; counter++)
相反,你可以像这样使用pints.length
for (var counter = 0; counter < pints.length; counter++)
答案 3 :(得分:0)
["1", "2", "3", "4", "5", "6", "7"]
01234567
这是您的代码生成的输出。请注意,数组中的值使用引号,这意味着它们的类型为String.
当使用带有字符串的+
时,您将获得字符串连接。
这就是你必须将它们转换为数字的原因。
有多种方法可以做到。
-> parseInt("5")
-> 5
-> "5" * 1
-> 5
-> Number("5")
-> 5
答案 4 :(得分:0)
更改
totalPints += pints[counter]
到
totalPints += parseInt(pints[counter])
parseInt
会将字符串值转换为整数。