这是我的第一篇帖子。我正在编写一个程序,从四个输入框中获取输入,求出这四个输入框的总和,并求出平均值。当我这样做的时候,我得到了一个错误,有人能指出我哪里出了错。谢谢
<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>
你建立分数数组的方式是不必要的复杂。你可以这样做:
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;
你没有按正确的方式平均。。。你可以从总和(循环外)除以分数得到平均值。
还:
new Array(4)
。在JavaScript中预先定义数组长度是不必要的(并且会损害可读性和性能)。new Number()
。这会创建一个Number
对象,这是一个可怕的东西,会在某个时间点造成严重破坏。使用Number(your String)
来投放。分数
未声明。(请打开严格模式!)不管怎样,下面是它的样子:
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.
}
欢迎来到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进入七