2014-11-06 6 views
0

У меня возникла проблема с получением среднего числа чисел, которые вводятся через окно подсказки. Мне нужно отображать числа, как я до сих пор, но я не могу заставить их добавить их вместе, чтобы получить среднее значение.Средние числа приглашений ввода

вот мой код.

<html> 
<body> 

<script type="text/javascript"> 
function show_prompt() { 
    i = 0; 
    do { 
     var number = prompt("Please Enter a Number"); 
     var number = parseInt(number); 
     i++; 

     document.write("Number: " + number); 
     document.write("<br>"); 

    } 
    while (i < 5); 
} 
show_prompt(); 
var avrg = number + number + number + number + number 
document.write('Average of scores : ' + avrg);  
</script> 
</body> 
</html> 
+0

Используйте 'array' и исследовать 'scope'. – Compass

+0

Что такое «число» в строке ... var avrg = number + number + number + number + number? Эта переменная не объявляется на этом уровне. Я вижу только переменную с тем же именем внутри функции, а не снаружи. –

+1

Переменная всегда может ссылаться только на значение * single *. Вы должны узнать о [** массивах **] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Predefined_Core_Objects#Array_Object). Кроме того, чтобы получить среднее значение из ряда значений, вы должны разделить сумму на количество значений. –

ответ

0

Вы должны двигаться вычисления внутри функции. Кроме того, вы можете сделать это проще:

function show_prompt() { 
 
    var i = 0; 
 
    var sum = 0;//declare a variable to keep the sum of numbers 
 
    do { 
 
    var number = prompt("Please Enter a Number"); 
 
    sum += parseInt(number); //sum the numbers here 
 
    i++; 
 

 
    document.write("Number: " + number); 
 
    document.write("<br>"); 
 

 
    } 
 
    while (i < 5); 
 

 
    document.write('Average of scores : ' + sum/i);//use the sum of the numbers divide by the the numbers the user enters 
 
} 
 
show_prompt();

Пробовал комментировать свой старый код с ошибками:

function show_prompt() { 
 
    i = 0; 
 
    do { 
 
     //there is no need to declare number twice 
 
     //also you don't sum somewhere the numbers you get from the user 
 
     var number = prompt("Please Enter a Number"); 
 
     var number = parseInt(number); 
 
     i++; 
 

 
     document.write("Number: " + number); 
 
     document.write("<br>"); 
 

 
    } 
 
    while (i < 5); 
 
} 
 
show_prompt(); 
 
//number is out of scope of function show_prompt so is undefined 
 
var avrg = number + number + number + number + number 
 
//to get an avg you have to divide the sum by the number 
 
document.write('Average of scores : ' + avrg);

+0

проверить обновленную скрипку. – user2019037

+1

Там мы идем! К сожалению, вы не объясняете, в чем проблема с кодом OP. * «Вы должны переместить вычисление внутри функции». * - это только одна часть проблемы. Вы многое изменили. –

+0

OP попытался вычислить avrg из функции. Но переменная 'number' не определена. – user2019037

0

Обратите внимание на то, что ваш номер var находится в пределах объекта show_prompt(), он не виден вне его.

Вам нужно, чтобы ваша функция show_prompt не была петлей и возвращала номер, и имела другую функцию, которая вызывает несколько раз show_prompt, принимает возвращаемые значения и вычисляет среднее значение. Также ваш код просто вычисляет сумму, а не средняя

Я не собираюсь показать вам точный код, но вот идея

calc_average: 
    var sum=0; 
    loop 5 times: 
    sum = sum + show_prompt(); 
    average = sum/5; 

show_prompt: 
    var number = prompt('blah blah'); 
    return number 
Смежные вопросы