2015-07-20 75 views
0

我有這個問題要解決。這聽起來可能很簡單,但我是一個初學者。 這裏是我的代碼到目前爲止,但只有一個窗口,當我運行它時出現。 謝謝您的建議和幫助javascript數組輸入用戶和平均值計算

var years= prompt("Enter the number of years: "); // Number of years 
var rainFall = new ArrayList(); 

while (years < 1) { 

    alert("Invalid. Enter 1 or greater: "); 
    years =prompt("Enter a year: "); 
} 

for (var y = 1; y <= years; y++) { 

    for (var m = 1; m <= NUM_MONTHS; m++) { 

     alert("Year " + y + " month " + m + ": "); 
     monthRain = prompt("enter rainfall for a month "); 
     rainfall.add(monthRain); 
    } 
} 

alert("\nNumber of months: " + (years * NUM_MONTHS) + "Total rainfall: " + calculateTotalRainFall(rainFall) + " inches" + "Average monthly rainfall: " + calculateAverageRainFall(rainFall) + " inches"); 
+0

嗨,嘗試更改rainfall.add(monthRain); rain.push(monthRain); –

回答

1

Array.prototype.sum = function() { 
 
     var total = 0; 
 
     for(var i in this) { 
 
     var i = parseFloat(this[i]); 
 
     if(i>=0) { 
 
      total += i; 
 
     } 
 
     } 
 
     return total; 
 
    }; 
 

 
    Array.prototype.avg = function() { 
 
     var avg = (this.length>0)? parseFloat(this.sum()/this.length) : 0; 
 
     avg = parseFloat(parseInt(avg*100)/100); 
 
     return avg; 
 
    }; 
 

 
    var years = parseInt(prompt("Enter the number of years: ")); // Number of years 
 

 
    var rainFall = []; 
 

 
    while (years < 1) { 
 
     alert("Invalid. Enter 1 or greater: "); 
 
     years = parseInt(prompt("Enter a year: ")); 
 
    } 
 

 
    var NUM_MONTHS = 12; 
 
    for (var y = 1; y <= years; y++) { 
 
     for (var m = 1; m <= NUM_MONTHS; m++) { 
 
     alert("Year " + y + " month " + m + ": "); 
 

 
     var monthRain = parseFloat(prompt("enter rainfall for a month ")); 
 
     if(monthRain>=0) { 
 
      rainFall.push(monthRain); 
 
     } 
 
     } 
 
    } 
 

 
if(years<1) years = 0; 
 
alert("\nNumber of months: " + (years * NUM_MONTHS) + " Total rainfall: " + rainFall.sum() + " inches" + " Average monthly rainfall: " + rainFall.avg() + " inches");

OR:

function sumArray (items) { 
 
     var total = 0; 
 
     for(var i in items) { 
 
     var i = parseFloat(items[i]); 
 
     if(i>=0) { 
 
      total += i; 
 
     } 
 
     } 
 
     return total; 
 
    }; 
 

 
    function avgArray(items) { 
 
     var sum = sumArray(items); 
 
     var avg = (items.length>0)? parseFloat(sum/items.length) : 0; 
 
     avg = parseFloat(parseInt(avg*100)/100); 
 
     return avg; 
 
    }; 
 

 
    var years = parseInt(prompt("Enter the number of years: ")); // Number of years 
 

 
    var rainFall = []; 
 

 
    while (years < 1) { 
 
     alert("Invalid. Enter 1 or greater: "); 
 
     years = parseInt(prompt("Enter a year: ")); 
 
    } 
 

 
    var NUM_MONTHS = 12; 
 
    for (var y = 1; y <= years; y++) { 
 
     for (var m = 1; m <= NUM_MONTHS; m++) { 
 
     alert("Year " + y + " month " + m + ": "); 
 

 
     var monthRain = parseFloat(prompt("enter rainfall for a month ")); 
 
     if(monthRain>=0) { 
 
      rainFall.push(monthRain); 
 
     } 
 
     } 
 
    } 
 

 
if(years<1) years = 0; 
 
alert("\nNumber of months: " + (years * NUM_MONTHS) + " Total rainfall: " + sumArray(rainFall) + " inches" + " Average monthly rainfall: " + avgArray(rainFall) + " inches");

+0

謝謝你的回答,但它遠不是我在課堂上學到的東西,現在我不應該使用功能。只是基本的僞代碼 – user5134938

+0

更新了我的答案(: – num8er

+0

對不起,我的意思是不使用函數,但我保留你的答案,爲我的下一部作品。非常感謝您的時間 – user5134938

0

嘗試更改rainfall.add(monthRain); rain.push(monthRain);

0

它看起來像你的核心錯誤是使用Java的ArrayList的類,什麼時候應該已經使用JavaScript的數組類。請記住,Java和JavaScript不相關(名字很混亂,是的)。

如果更改new ArrayList()new Array(),並rainfall.addrainFall.push(注意大小寫變化爲好),然後它似乎工作。

如果您有權訪問JavaScript控制檯檢查器(例如,通過ctrl-shift-J在Chrome中訪問),則可以查找代碼中發生的JS錯誤,例如ArrayList couldn找不到。

已在下面修正。我還添加了缺少的NUM_MONTHS常量(我假設你有其他地方)。

var NUM_MONTHS = 12; 
var years= prompt("Enter the number of years: "); // Number of years 

// CHANGE: use "Array", not "ArrayList". You could also use "var rainFall = [];", which I find 
var rainFall = new Array(); 

while (years < 1) { 

    alert("Invalid. Enter 1 or greater: "); 
    years =prompt("Enter a year: "); 
} 

for (var y = 1; y <= years; y++) { 

    for (var m = 1; m <= NUM_MONTHS; m++) { 

     alert("Year " + y + " month " + m + ": "); 
     monthRain = prompt("enter rainfall for a month "); 
     // CHANGE: use "push()" method of Array, and use camelCase for variable name consistency 
     rainFall.push(monthRain); 
    } 
} 

alert("\nNumber of months: " + (years * NUM_MONTHS) + "Total rainfall: " + calculateTotalRainFall(rainFall) + " inches" + "Average monthly rainfall: " + calculateAverageRainFall(rainFall) + " inches");