【问题标题】:Average of input prompt numbers输入提示数的平均值
【发布时间】:2014-11-06 19:25:44
【问题描述】:

我在获取通过提示窗口输入的数字的平均值时遇到问题。我需要显示到目前为止的数字,但我似乎无法将它们加在一起以获得平均值。

这是我目前的代码。

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

【问题讨论】:

  • 使用array,并检查scope。
  • 行中的“数字”是什么... var avrg = number + number + number + number + number ?该变量未在该级别声明。我只在函数内部看到同名的变量,而不是在函数外部。
  • 一个变量只能引用一个单个值。你应该了解arrays。此外,要获得一系列值的平均值,您必须将总和除以值的数量。

标签: javascript loops average


【解决方案1】:

你必须在函数内部移动计算。你也可以更简单地做到这一点:

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

【讨论】:

  • 好了!不幸的是,您没有解释 OP 代码的问题所在。 “你必须在函数内部移动计算。” 只是问题的一部分。你的改变不止于此。
  • OP 试图从函数中计算 avrg。但是变量number 是未定义的。
  • 是的,但这不是唯一的问题。无需简明扼要,请随意适当地解释更改。
  • 感谢您的帮助,我对 javascript 还很陌生,所以我很迷茫。这不仅有帮助,而且效果很好,再次感谢您。
  • @FelixKling 尝试用错误注释旧代码。
【解决方案2】:

请注意,您的 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    相关资源
    最近更新 更多