2015-10-06 79 views
-1

我正在從事學校的這項工作。這個程序的工作原理是這樣的:你用逗號分隔一些數字,然後程序把這些值放在一個整數數組(parseInt())中,然後它調用計算函數,計算出最高數字,和,和差異。但事情是,程序認爲變量和是一個字符串,而不是一個int。所以我得到0 + 1 + 2 = 012的總和。這是純粹的JavaScript btw。變量不會是一個整數javascript

window.onload = start; 
     var arr = []; 
     var sum = 0; 
     var max; 
     var avg; 

     function start() { 
      document.getElementById('sub').onclick = getValues; 
     } 

     function getValues() { 
      var str = document.getElementById('input').value; 
      arr = str.split(","); 
      for (var i = 0; i < arr.length; i++) { 
       parseInt(arr[i]); 
      } 
      calculate(arr); 
      print(); 
     } 

     function calculate(arr) { 
      var temp = arr[0]; 
      sum = 0; 
      for (var i = 0; i < arr.length; i++) { 
       if (temp < arr[i]) { 
        temp = arr[i]; 
       } 
       sum += arr[i]; 
      } 
      max = temp; 
      avg = sum/arr.length; 
     } 

     function print() { 
      document.getElementById('div').innerHTML = "In the array of theese values: " + arr + ",<br>is " + max + " the biggest, " + sum + " is the sum, " + " and " + avg + " is the average."; 
     } 
+0

當通過'arr'迭代,你調用'parseInt'上的價值,但它從來沒有改變它的類型爲'number'。 –

+1

'parseInt(arr [i])'沒有賦值給getValues()函數中的任何值,那麼您應該執行'arr [i] = parseInt(arr [i])'或者解析爲int值你需要它的地方 – Icepickle

+0

在'parseInt'行放置一個斷點。執行後,檢查'arr [i]'的值。 – 2015-11-08 08:42:57

回答

6

arr的值是字符串,因爲他們來自split()

parseInt()調用不起任何作用,因爲你扔掉它的回報。無論是保存價值:

arr[i] = parseInt(arr[i], 10); 

或強迫多項加時:

sum += +arr[i]; 
相關問題