Написание программы для определения суммы отрицательных и положительных элементов массива

#javascript

#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");
 

Комментарии:

1. Да, это дополнительная практическая работа для тех, кто хочет узнать больше о JS. Я просто выполняю несколько упражнений на нем, потому что я только начал изучать JS месяц назад!

Ответ №1:

разве сумма негативов не всегда меньше суммы позитивов? если вы говорите об абсолютной разнице. чем пытаться

 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;
 

Ответ №2:

Несколько вещей — в которых нет необходимости Number(0) — достаточно просто использовать 0 .

Линия:

  positiveSum = Number(test[i]  );
 

Просто присваивает значение test[i] 1 (это то, что делает оператор post increment) positiveSum . Это не добавляет его к positiveSum (то же самое верно для negativeSum .

Это должно работать лучше:

 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];
 

Ответ №3:

Вы ничего не суммируете, вы увеличиваете каждое введенное вами число. Вам нужна положительная сумма = (каждое число).

Вы также должны преобразовать элемент в число, прежде чем выполнять сравнение с нулем и остальными.

Комментарии:

1. Он не просто увеличивает — он присваивает результат переменной, которая должна быть суммой, вместо того, чтобы добавлять ее к сумме.

2. @Oded Я знаю; Я предпочитаю не просто раздавать ответы, когда ясно, что кто-то только учится.