2017-01-29 155 views
-1

我的程序應該採取未知數量的數字並計算平均值,看它是否> 49或< 50.問題出現在for循環中。我的總和沒有添加每個標記並返回一個未定義的值。我不知道爲什麼會發生這種情況,因爲實際標記完全通過循環變量沒有正確循環

var passingAverage = function() 
{ 

    var sum; 
    var marks = arguments; 
    var average; 
    var i; 
    for (i =0; i<marks.length; i++) 
    { 
     sum += marks.length[i]; 
    } 
     average = (sum/i); 

     if (average > 49) 
     { 
      return ("true"); 
     } 
     else if (average < 50) 
     { 
      return ("false"); 
     } 

    }; 

console.log('passingAverage(75,42,98) returns: ' + passingAverage(75,42,98)); 
console.log('passingAverage(34,93,77,89,49) returns: ' +  passingAverage(34,93,77,89,49)); 
console.log('passingAverage(33,61) returns: ' + passingAverage(33,61)); 

console.log(「\ n」);

+0

寫標記[i]而不是marks.length [i] –

+0

'return(「true」);'看起來很奇怪,因爲你返回一個字符串而不是布爾值。它應該只是'返回true;' – epascarello

回答

0
sum += marks.length[i]; 

這不是調用數組中元素的真正方式

sum += marks[i];取代sum += marks.length[i];,那麼真正sum會來計算,而且平均有真正價值

知道初始值sum當你定義它時,它必須是var sum = 0;

0

我覺得你需要總結一下。將var sum和var sum = 0;

0

我有正在運行的代碼在這裏:https://jsfiddle.net/bwcpps1v/

var passingAverage = function() 
{ 
    var sum = 0; 
    var marks = Array.from(arguments); 
    var average; 
    var i; 

    for (i =0; i<marks.length; i++) 
    { 
    sum += marks[i]; 
    } 

    average = (sum/marks.length); 

    if (average > 49) 
    { 
    return true; 
    } else if (average < 50) { 
    return false; 
    } 

}; 

console.log('passingAverage(75,42,98) returns: ' + passingAverage(75,42,98)); 
console.log('passingAverage(34,93,77,89,49) returns: ' +  passingAverage(34,93,77,89,49)); 
console.log('passingAverage(33,61) returns: ' + passingAverage(33,61)); 

幾個意見:

  • 你需要獲取調試好。瞭解Chrome開發工具,作爲調試JS的開始。逐步通過你的源觀看關鍵變量,你會更快地發現最早的錯誤。
  • 花一些時間用linter,還可以使用IDE或體面的文本編輯器縮進代碼 - 它使得它更易於閱讀和調試。
+0

是的,我剛剛開始,所以我一定會在那 – ortz3

+0

祝你好運!如果你在這裏得到的答案爲你工作,請注意正確和/或標記以解決這個問題。這是StackOverflow中的慣例。 – SylonZero