当前位置: 首页 > 知识库问答 >
问题:

Javascript平均数组

漆雕奇逸
2023-03-14

这是我的第一篇帖子。我正在编写一个程序,从四个输入框中获取输入,求出这四个输入框的总和,并求出平均值。当我这样做的时候,我得到了一个错误,有人能指出我哪里出了错。谢谢

<html>
<head>
<title> Average marks </title>

<script type = "text/javascript">

function average(form)
{

scores = new Array(4)

scores [0] = form.mark1.value
scores [0] = new Number(scores[0])
scores [1] = form.mark2.value
scores [1] = new Number(scores[1])
scores [2] = form.mark3.value
scores [2] = new Number(scores[2])
scores [3] = form.mark4.value
scores [3] = new Number(scores[3])


var Sum = 0
var average

for(var x = 0; x < scores.length; x ++)
{
Sum = Sum + scores[x]
average = Sum / scores[x]
}



document.write("The sum of the marks is equal to " + Sum + "<br>")
document.write("The average of these marks is equal to " + average + "<br>")


}

</script>


</head>

<body>

<form>
Enter the first mark : <input type = "text" name="mark1"> <br>
Enter the second mark : <input type = "text" name="mark2"> <br>
Enter the third mark : <input type = "text" name="mark3"> <br>
Enter the fourth mark : <input type = "text" name="mark4"> <br>

<input type = "submit" value = "submit" onclick="average(this.form)">
</form>


</body>
</html>

共有3个答案

骆雅昶
2023-03-14

你建立分数数组的方式是不必要的复杂。你可以这样做:

scores [0] = form.mark1.value;
scores [1] = form.mark2.value;
scores [2] = form.mark3.value;
scores [3] = form.mark4.value;

那么你的平均值计算有一个错误。计算平均值的正确方法是将所有值相加,然后将它们除以一次值的数量。

for(var x = 0; x < scores.length; x ++)
{
    Sum = Sum + scores[x];
}
average = Sum / scores.length;
秦涵涤
2023-03-14

你没有按正确的方式平均。。。你可以从总和(循环外)除以分数得到平均值。

还:

  1. 不要使用new Array(4)。在JavaScript中预先定义数组长度是不必要的(并且会损害可读性和性能)。
  2. 永远不要使用new Number()。这会创建一个Number对象,这是一个可怕的东西,会在某个时间点造成严重破坏。使用Number(your String)来投放。
  3. 我强烈建议你在语句末尾加上分号。
  4. 分数未声明。(请打开严格模式!)

不管怎样,下面是它的样子:

function average(form) {
    var scores = [ // Array literal!
        Number(form.mark1.value), // You could also use a leading +
        Number(form.mark2.value),
        Number(form.mark3.value),
        Number(form.mark4.value)
    ];

    var sum = 0;

    for(var i = 0; i < scores.length; i++) {
        sum += scores[i];
    }

    var average = sum / scores.length;

    // etc.
}
易淳
2023-03-14

欢迎来到Stackoverflow:)我们很乐意在更好地学习我们的工具的同时帮助您。关于算法的一个注意事项:将平均计算命令移到循环之外:

for(var x = 0; x < scores.length; x ++)
{
  Sum = Sum + scores[x];  //or Sum += scores[x];
}

average = Sum / scores.length;  //length of the array scores is in scores.length

我会使用parseInt()而不是new Number(),因为new Number()会创建一个对象,而parseInt()会给出实际的文本值。(更好的表现)。

顺便说一句,不要忘记在每个变量定义之前加上var,除非你想让它们被全局访问(坏主意)。除了分数,你在所有变量上都做得很好。定义应该是var分数,尽管这不是该错误的来源。

另一点:您可以使用isNaN()函数检查parseInt()的结果是否正确。如果数字可以有小数点,还可以使用parseFloat()

>

parseFloat()

如果从字符串到数字的转换失败,两个函数的结果都是NaN(不是数字)。

最后,我认为用指定的长度定义数组是个好主意。它提高了代码的可读性。但是在Javascript中没有必要,因为它会在运行时自动增加/减少数组的长度,所以你不必提前决定它应该有多长。这可能是一件好事,也可能是一件坏事,取决于你如何使用它。但是一般来说,你可以使用var myarr=[];代替var myarr=new Array();。然而,当您想提示其他开发人员发生了什么时,您也可以指定数组长度:var myarr=new Array(4);

使用Stackoverflow的最后一点是:请接受最佳答案,并“向上投票”其他有用的答案。这样你会得到分数,其他人也会得到分数。

祝你好运

 类似资料:
  • 然后我需要一个得到平均高点的函数。下面是我做的: 但当我测试它时,我得到的回答不是平均值。我做错了什么?有人能提供线索吗?

  • Python是否有一个SciPy函数或NumPy函数或模块来计算给定特定窗口的一维数组的运行平均值?

  • 取一定时间内的平均值 用法 Your browser does not support the video tag. 案例:数据变化趋势 功能:加入平均值和不加平均值的折线图形成对比,显示数字改变的规律 工作原理 结果将会是一段时间段输入的平均值。你可以设置配置项中的时间段长度(工程师叫它采样窗) 提示 短的采样窗意为着输出对输入变化的反应更敏感。

  • 我正在尝试使用用户输入将数字放入一个数组,然后找到这些数字的平均值,也找到哪些数字大于平均值。这些数字进入一个数组,但当我试图求平均数时,我无法求出平均数,以及哪些数字大于平均数,因为对于试图求出大于平均数的数字的部分,并非所有变量都是可见的。但是,当我允许这个部分看到所有的变量(don't But{}围绕某些部分)时,它会找到每一个数的平均值。现在,它为每个数字打印平均值,而为大于平均值的数字打

  • 问题内容: 我试图通过取元素的平均值将numpy数组分组为较小的大小。例如,将100x100阵列中的平均5x5子阵列的foreach平均值创建20x20大小的阵列。由于需要处理大量数据,这是一种有效的方法吗? 问题答案: 我已经尝试过使用较小的阵列,因此请与您的阵列进行测试: 6x6-> 3x3的示例:

  • 这是我被要求遵循的提示。 编写一个名为平均值的方法,该方法接收一个测试等级数组,并返回类平均值的字母等级。职等范围如下: > 80 70个 60 平均的 使用以下方法标题:public static char average(int[]grades) 这是我应该遵循的输出示例。 你想考几级?10 进入一年级:70进入二年级:87进入三年级:95进入四年级:80进入五年级:80进入六年级:78进入七