对于我的Web开发类,我有以下任务:
在你的老板允许办公室套房内的可调恒温器之前,他必须确信在不同的日子里,不同的官员和每个办公室内都会出现主要的温度变化。您将编写一个程序,允许每个员工在五天的每一天中午输入温度,并显示最高,最低和平均(平均)温度。使用For循环获取五个读数。 (提示:将最高和最低温度变量初始化为读取的第一个温度,然后比较其他温度以查看它们是低还是高。)使用parseFloat()方法转换温度输入十进制数并将平均值显示为小数点后一位。
如何找到平均温度?
<!DOCTYPE HTML>
<html>
<body>
<script type="text/javascript">
var high; // highest temperature
var low; // lowest temperature
var avg; // average temperature
var temperatures = [];
for (var i = 0; i < 5; i++) {
high = temperatures[0];
low = temperatures[0];
temperatures.push(parseFloat(prompt("Enter the temperature for day " + (i+1))));
if (high < temperatures[i]) {
high = temperatures[i]; }
if (low > temperatures[i]) {
low = temperatures[i]; }
}
document.write("The highest temperature is " + high + ".<br>");
document.write("The lowest temperature was " + low + ".<br>");
document.write("The average temperature was " + avg + ".");
</script>
</body>
</html>
答案 0 :(得分:0)
您将alltemp中的值设置为高或低,而不是相反。这是一个小提示,向您展示如何执行此操作(因为您必须使用for循环,但有更简洁的方法):https://jsfiddle.net/vtbahu3v/
var nums = [2, 55, 3, 87, 4, 23],
high = low = nums[0];
for(var i = 0; i < nums.length; i++) {
high = Math.max(high, nums[i]);
low = Math.min(low, nums[i]);
}
alert("High is " + high);
alert("Low is " + low);
答案 1 :(得分:0)
第1步
@Emily,这里有一些东西让你开始使用for
循环来收集用户输入。
var temperatures = [];
for (var i = 1; i <= 5; i++) {
var temperature = prompt('Enter temperature for day ' + i);
// Parse input and add it to the temperatures array
}
第2步
太棒了,所以你现在有一个由5个温度组成的数组temperatures
。在下面的示例中,我将用于捕获的行拆分并将值推送到两个单独的语句中以便于阅读。如下:
var temperature = prompt('Enter the temperature for day ' + (i + 1));
temperatures.push(parseFloat(temperature));
您需要做的另一个小改动是您在循环内分配high
和low
值,但在将任何值推送到temperatures
数组之前,所以我们需要看一下。
但首先,找到平均温度。因此,正如您所知,平均值是所有值的总和除以值的数量。在循环的每次迭代中,我们都获得下一个温度值。所以我们可以使用循环将所有这些值一起添加。如下:
var temperatures = [];
var total = 0;
var high;
var low;
var avg;
for (var i = 0; i < 5; i++) {
// Capture, parse and append temperature to temperatures array
var temperature = prompt('Enter the temperature for day ' + (i + 1));
temperatures.push(parseFloat(temperature));
// Increment total by new temperature value
total += temperature;
}
但是high
和low
温度怎么样?如果我们从最新的问题更新中获取代码,则在循环的每次迭代中,high
和low
将重置为第一个温度,然后您将其与当前温度进行比较在循环。这不会奏效。
然而,我们可以做的是将high
和low
设置为非常低和非常高的值,以便用户输入的任何温度总是更高或更低。例如:
var high = Number.NEGATIVE_INFINITY;
var low = Number.POSITIVE_INFINITY;
然后在循环的每次迭代中,我们将您已编写的代码与当前温度与之前的high
和low
值进行比较。如下:
var temperatures = [];
var total = 0;
var high = Number.NEGATIVE_INFINITY;
var low = Number.POSITIVE_INFINITY;
var avg;
for (var i = 0; i < 5; i++) {
// Capture, parse and append temperature to temperatures array
var temperature = prompt('Enter the temperature for day ' + (i + 1));
temperatures.push(parseFloat(temperature));
// Increment total by new temperature value
total += temperature;
// Compare high and low temperatures
if (high < temperature) high = temperature;
if (low > temperature) low = temperature;
}
最后,你如何计算平均值?
// Calculate average temperature
avg = total / temperatures.length;
第3步
如果您感兴趣,可以进一步改进此代码。但这可能超出了这个问题的范围。
如果您想改进它,请查看Math.min()
,Math.max()
和apply()
。我很高兴发布更多代码来说明如何使用这些代码来获取高温和低温,以及Array.prototype.reduce
来计算平均值。