вычисление среднего, используя для цикла в JavaScript - PullRequest
1 голос
/ 27 января 2012
function averageCalculator (numvalues) {

    for(i=0, i <= numvalues, i++>) {
    var score = prompt("input the score")
    result1 += score;

    }

    alert(result1 / 3);
}

эта функция позже вызывается кнопкой с onclick="averageCalculator (2)

<input type="button" value="Click for the average" onclick="averageCalculator (2)">

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

Ответы [ 4 ]

4 голосов
/ 27 января 2012

Ваш код имеет несколько проблем. Цикл for не отформатирован должным образом, и необходимо завершать операторы точкой с запятой. Также вам нужно объявить переменные. И ваш цикл будет работать numvalues ​​+ 1 раз, поэтому я удалил = в вашем цикле. Также, если вы хотите рассчитать среднее значение, которое вы хотите разделить на numvalues.

function averageCalculator (numvalues) {
var result1 = 0;
for(i=0; i < numvalues; i++) {    
    var score = prompt("input the score");   
    result1 += score;    
}
alert(result1 / numvalues);
}

Вдобавок к неверному синтаксису вы столкнетесь с общей "проблемой" с javascript здесь. Входные данные обрабатываются как строки, и вместо добавления они будут объединены. Если в качестве баллов указать 2 и 2, то получим 11. 2, объединенные с 2 = 22/2 = 11. Перед тем, как сложить их вместе, нужно явно привести значение к числу:

function averageCalculator (numvalues) {
var result1 = 0;
for(i=0; i < numvalues; i++) {    
    var score = prompt("input the score");   
    result1 += Number(score);    
}
alert(result1 / numvalues);
}

Над кодом вернется 2

2 голосов
/ 27 января 2012

Синтаксис вашего цикла for неправильный:

for(i=0, i <= numvalues, i++>) {

должно быть

for(i=0; i <= numvalues; i++) {

Совет: также лучше использовать

for(var i=0; i <= numvalues; i++) {

с тех пор i будет локальной переменной вместо глобальной.

1 голос
/ 27 января 2012

Альтернативное решение (с использованием библиотеки функционального программирования, например Underscore.js ):

function averageCalculator(numValues) {
    var numbers = _.map(_.range(numValues), function(element) {
        return +prompt('input the score');
    });

    var result = _.reduce(numbers, function(memo, number) {
        return memo + number;
    }, memo);

    alert(result / 3);
}

Хотя немного сложнее (и менее эффективно), вы полностью избавитесь от циклов.

EDIT

+prompt('input the score') действует так же, как Number(prompt('input the score')).

1 голос
/ 27 января 2012

Попробуйте вот так

для (var i = 0; i <= numvalues; i ++) {} </p>

...