的Javascript检查最大/最小/平均人数从记录集
问题描述:
function lab09unknownLoopCountPart2() {
//Constants
var ONE_HUNDRED = 100;
var ZERO = 0;
//Variables
var employeeHourlyWage;
var hourlyMaximum = ZERO;
var hourlyMinimum = ZERO;
var totalHourlyWage = ZERO;
var records;
var counter = ZERO;
var average;
records = openEmployeePayrollRecords();
while (records.readNextRecord()) {
employeeHourlyWage = records.getEmployeeHourlyWage();
totalHourlyWage += employeeHourlyWage;
counter++;
average = totalHourlyWage/counter;
if (employeeHourlyWage < ONE_HUNDRED) {
hourlyMaximum = employeeHourlyWage;
}
if (employeeHourlyWage < ONE_HUNDRED) {
hourlyMinimum = employeeHourlyWage;
}
}
document.write("Average Hourly Wage: " + average + "<br />");
document.write("Maximum Hourly Wage: " + hourlyMaximum + "<br />");
document.write("Minimum Hourly Wage: " + hourlyMinimum + "<br />");
的记录集是简单地从15个号码 - 30.我必须通过他们进行排序,找到最大,最小和平均。
我知道我的两个IF语句是不正确的,我想知道如何使用Math.min和Math.max来检查这个,没有。
谢谢。
答
var hourlyMinimum = -1;
var hourlyMaximum = -1;
if (hourlyMaximum === -1 || employeeHourlyWage > hourlyMaximum) {
hourlyMaximum = employeeHourlyWage;
}
if (hourlyMinimum === -1 || employeeHourlyWage < hourlyMinimum) {
hourlyMinimum = employeeHourlyWage;
}
假设工资不能为负。
答
if (employeeHourlyWage > hourlyMaximum)
hourlyMaximum = employeeHourlyWage;
if (employeeHourlyWage < hourlyMinimum)
hourlyMinimum = employeeHourlyWage;
此外,你可以移动平均计算以外的循环cuz它的价值仅用于外部。
顺便说一下,使用ZERO和ONE_HUNDRED常量的意义 - 它们不是语义上的。
答
对于您的两个“if条件”,您正在检查工资的新值是否大于最大值或最小值。
其中hourlyMaximum
给出EmployeePayrollRecords集中每个EmployeeHourlyWage的最大值。
和
hourlyMinimum
给出了在设定的各EmployeePayrollRecords EmployeeHourlyWage的最小值。
因此,对于while循环中的每次迭代,您需要重新分配工资值与if块中的值。
如果从记录中获得的当前工资大于当前最高值,则分配否则不要。最低限度的类似过程。
目前的“if块”只是抽调小时最低值和最高工资一旦低于100(ONE_HUNDRED)
为了证明自己,你确实得到正确的价值观,试图将它们输出通过代码和手工。
这就是我的教练让我们声明常量的方式,我不应该声明它们吗?我对你的意思有点困惑。 – TheStandardRGB 2010-11-23 20:15:21