编写程序以找出数组的负元素和正元素的总和

时间:2011-10-29 20:25:32

标签: javascript

我的代码运行良好,直到预期返回结果为止 - 它不会累加用户输入的任何值。有什么帮助吗?

a = (prompt("a:"));
b = (prompt("b:"));
c = (prompt("c:"));

negativeSum = Number(0);
positiveSum = Number(0);

var test = [a, b, c];

for (i = 0; i < test.length; i++) {

    if (isNaN(test[i])) {
        alert(test[i] + " : incorrect input.");
    }

    else

    if (test[i] < 0) {
        alert(test[i] + " : positive.")
        negativeSum = Number(test[i]++);
    }
    else {
        alert(test[i] + " : positive.")
        positiveSum = Number(test[i]++);
    }
}

alert(positiveSum + " : sum of +ve elements");
alert(negativeSum + " : sum of -ve elements");

3 个答案:

答案 0 :(得分:2)

不是负数之和总是小于正数之和。 如果你谈论绝对差异。 而不是尝试

if (test[i] < 0) {
        alert(test[i] + " : positive.")
        negativeSum += Number(test[i]);
    }
    else {
        alert(test[i] + " : positive.")
        positiveSum += Number(test[i]);
    }

//after the loop 

return Math.abs(negativeSum) > positiveSum;

答案 1 :(得分:1)

有几件事 - 不需要Number(0) - 只需使用0即可。

该行:

 positiveSum = Number(test[i]++);

只需将test[i] + 1(这是增量++运算符所做的内容)的值分配给positiveSum。它不会将其添加到positiveSumnegativeSum也是如此。

这应该更好:

negativeSum = 0;
positiveSum = 0;

var test = [a, b, c];

for (i = 0; i < test.length; i++) {

    if (isNaN(test[i])) {
        alert(test[i] + " : incorrect input.");
    }

    else

    if (test[i] < 0) {
        alert(test[i] + " : positive.")
        negativeSum += test[i];
    }
    else {
        alert(test[i] + " : positive.")
        positiveSum += test[i];
    }
}

在我的代码中行:

negativeSum += test[i];

相当于:

negativeSum = negativeSum + test[i];

答案 2 :(得分:1)

你没有总结任何东西,你正在增加你输入的每个数字。你想要positiveSum + =(每个数字)。

在进行比较之前,您还应该将元素转换为数字,然后再进行比较。