JavaScript数组中数字求和,生成字符串而不是数字。

18 浏览
0 Comments

JavaScript数组中数字求和,生成字符串而不是数字。

下面的代码输出的是一个数字字符串,而不是数组中的数字之和。例如,如果将n设为3,并将数字1、2、3添加到数组中,输出结果是0123,而我需要的是6。这段代码只能使用while循环,而不能使用for循环,这也是代码看起来有点奇怪的原因。请问有人能解释一下为什么输出是一个字符串,而不是数字之和吗?\n

var n = -1;
var n2 = 0;
var numbers = [];
while (n < 0) {
    n = prompt("请输入一个正整数");
}
while (n > 0) {
    n2 = prompt("请输入一个整数");
    numbers.push(n2);
    n = n - 1
}
var sum = numbers.reduce(function(a, b){
    return Number(a) + Number(b);
}, 0);
alert(sum);

0
0 Comments

JavaScript中的数组求和问题是一个常见的编程问题。通常情况下,我们可以通过遍历数组并将所有数字相加来解决这个问题。然而,有时我们可能会遇到一个特殊的情况,即在数组中的数字被解析为字符串而不是数字的情况。

在JavaScript中,prompt函数用于显示一个提示框,要求用户输入一个值。然而,prompt函数始终返回一个字符串,而不是一个数字。这就是导致数组求和问题出现的原因之一。

要解决这个问题,我们需要将字符串解析为数字。在JavaScript中,可以使用parseInt函数来将字符串转换为整数。下面是一个示例代码:

strN = prompt("Please enter a positive integer");
n = parseInt(strN);

在上面的代码中,我们首先使用prompt函数获取用户输入的字符串,并将其存储在变量strN中。然后,我们使用parseInt函数将strN解析为一个整数,并将其存储在变量n中。

通过将输入的字符串解析为数字,我们可以确保在进行数组求和操作时得到正确的结果。这样,我们就可以使用常规的遍历数组求和的方法来解决这个问题了。

总结起来,JavaScript中的数组求和问题可能会出现在字符串被解析为数字之前。通过使用parseInt函数将字符串解析为数字,我们可以解决这个问题,并得到正确的求和结果。

0
0 Comments

问题的原因是由于prompt函数始终返回一个字符串,导致在数组中存储的是字符串而不是数字。解决方法是使用parseInt函数将字符串转换为整数。

下面是代码的修正版本:

var n = -1;
var n2 = 0;
var numbers = [];
while (n < 0) {
    n = prompt("请输入一个正整数");
}
while (n > 0) {
    n2 = prompt("请输入一个整数");
    numbers.push(parseInt(n2, 10));
    n = n - 1;
}
var sum = numbers.reduce(function(a, b){
    return a + b;
}, 0);
alert(sum);

在修正后的代码中,我们通过使用parseInt函数将n2转换为整数,确保我们在数组中存储的是数字而不是字符串。这样,我们可以正确地计算数组中数字的总和。

0