【问题标题】:JavaScript Array- adding the values togetherJavaScript 数组 - 将值相加
【发布时间】:2013-12-16 05:17:08
【问题描述】:

我正在尝试获取用户输入的数字。将这些数字存储在数组中,然后将数组中的所有值相加以获得总数。我正在使用数字 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]    
    }

}

【问题讨论】:

  • Javascript 不知道您正在尝试添加数字,而是将您的数字视为字符串。尝试在变量名或用户parseInt 前面加上+ 或确保将其转换为数字。

标签: javascript arrays function addition


【解决方案1】:

您可以像这样使用parseInt 转换pints

totalPints += parseInt(pints[counter], 10);

而且您不必像这样对长度进行硬编码

for (var counter = 0; counter < 7; counter++)

您可以像这样使用pints.length

for (var counter = 0; counter < pints.length; counter++)

【讨论】:

  • 非常感谢。我认为这很简单,但是在搜索帮助时,所有示例都有带字符串的数组,所以没有帮助。
【解决方案2】:

您的数组包含字符串而不是它们的整数值,而不是

totalPints += pints[counter];

尝试使用类似的东西 -

totalPints += parseInt(pints[counter], 10);

【讨论】:

  • 使用parseInt()时,您应该始终添加基数作为第二个参数,以确保该值被解释为以10为底的数字:parseInt(pints[counter], 10)
【解决方案3】:

发生这种情况是因为每个数字都被读取为字符串,而不是数字。变化:

pints[counter] = prompt("Enter the number of pints");

到:

pints[counter] = +prompt("Enter the number of pints");

将值转换为数字,以便您从+ 运算符获得加法而不是串联。

【讨论】:

    【解决方案4】:
    ["1", "2", "3", "4", "5", "6", "7"]
    01234567 
    

    这是您的代码产生的输出。请注意,数组中的值用引号引起来,这意味着它们的类型是 String. 当使用带有字符串的 + 时,您会得到字符串连接。

    这就是你必须将它们转换为数字的原因。

    有多种方法可以做到这一点。

    -> parseInt("5")
    -> 5
    -> "5" * 1
    -> 5
    -> Number("5")
    -> 5
    

    【讨论】:

      【解决方案5】:

      改变

      totalPints += pints[counter]
      

      totalPints += parseInt(pints[counter])
      

      parseInt 会将字符串值转换为整数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多