[英]Javascript check for Max/Min/Average number from a record set
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;
同樣,您也可以將平均值計算移出循環,因為它的值僅在外部使用。
順便說一句,使用這些ZERO和ONE_HUNDRED常量有什么意義-它們不是語義上的。
對於您的兩個“如果條件”,您正在檢查工資的新值是否大於最大值或最小值。
其中hourlyMaximum
給出EmployeePayrollRecords集中每個EmployeeHourlyWage的最大值。
和
hourlyMinimum
給出EmployeePayrollRecords集中每個EmployeeHourlyWage的最小值。
因此,對於while循環中的每次迭代,您都需要在if塊中重新分配工資值。
如果從記錄中獲得的當前工資大於當前的最高工資,則分配它,否則不分配。 最低要求類似的過程。
當前的“ if blocks”僅在每小時最低工資和最高工資的值低於100(ONE_HUNDRED)時才重新分配
為了向自己證明您確實獲得了正確的值,請嘗試通過代碼和手動輸出它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.