2010-11-23 91 views
1
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 />"); 

}的Javascript檢查最大/最小/平均人數從記錄集

的記錄集是簡單地從15個號碼 - 30.我必須通過他們進行排序,找到最大,最小和平均。

我知道我的兩個IF語句是不正確的,我想知道如何使用Math.min和Math.max來檢查這個,沒有

謝謝。

回答

1
var hourlyMinimum = -1; 
    var hourlyMaximum = -1; 

    if (hourlyMaximum === -1 || employeeHourlyWage > hourlyMaximum) { 
     hourlyMaximum = employeeHourlyWage; 
    } 
    if (hourlyMinimum === -1 || employeeHourlyWage < hourlyMinimum) { 
     hourlyMinimum = employeeHourlyWage; 
    } 

假設工資不能爲負。

0
if (employeeHourlyWage > hourlyMaximum) 
    hourlyMaximum = employeeHourlyWage; 
if (employeeHourlyWage < hourlyMinimum) 
    hourlyMinimum = employeeHourlyWage; 

此外,你可以移動平均計算以外的循環cuz它的價值僅用於外部。

順便說一下,使用ZERO和ONE_HUNDRED常量的意義 - 它們不是語義上的。

+0

這就是我的教練讓我們聲明常量的方式,我不應該聲明它們嗎?我對你的意思有點困惑。 – TheStandardRGB 2010-11-23 20:15:21

0

對於您的兩個「if條件」,您正在檢查工資的新值是否大於最大值或最小值。

其中hourlyMaximum給出EmployeePayrollRecords集中每個EmployeeHourlyWage的最大值。

hourlyMinimum給出了在設定的各EmployeePayrollRecords EmployeeHourlyWage的最小值。

因此,對於while循環中的每次迭代,您需要重新分配工資值與if塊中的值。

如果從記錄中獲得的當前工資大於當前最高值,則分配否則不要。最低限度的類似過程。

目前的「if塊」只是抽調小時最低值和最高工資一旦低於100(ONE_HUNDRED)

爲了證明自己,你確實得到正確的價值觀,試圖將它們輸出通過代碼和手工。

相關問題