2016-12-01 28 views
0

我需要創建一個程序,要求用戶輸入一個存儲在數組中的值,並繼續詢問要添加的值,直到他們沒有更多數字要輸入數組。之後,我必須輸出不包含零的數組(它們被允許輸入零,所以我必須從輸出中過濾它們)並返回數組的總和。我目前與我的程序有關的問題是,arr.push(x)當前正在嘗試推送函數arrin中未定義的值。我覺得好像還有更好的方法比我現在正在嘗試,所以我都樂意改進。推送未定義的語法錯誤JS

var x = parseInt(prompt("Enter a number, to exit enter NaN", "0"), 10); 

var y = arrin(x); 

var arr = []; 

var s; 

function arrin(x) { 

if(x != NaN){ 
    arr.push(x) 
    x = parseInt(prompt("Enter a number, to exit enter NaN", "0"), 10); 
    y = arrin(x); 
}else{ 
    document.write("<p>"+arr.toString()+"</p>"); 
    s = sum(arr); 
    doucment.write("<p> The sum of all elements in the array is "+s+"</p>"); 
} 

}

+0

你有尾遞歸以'while'循環容易避免 – arhak

回答

0

x != NaN將無法​​正常工作。

!isNaN(x)將檢查var是否是一個數字。

x != "NaN"將檢查文字字面意思是「NAN」

無論是過去兩年的正常工作。

var arr = []; 
 
var y = arrin(0); 
 
var s; 
 

 
function arrin(x) { 
 

 
    if (!isNaN(x)) { 
 
    if (x != 0) arr.push(x) 
 
    x = parseInt(prompt("Enter a number, to exit enter NaN", "0"), 10); 
 
    y = arrin(x); 
 
    } else { 
 
    document.write("<p>" + arr.toString() + "</p>"); 
 
    s = sum(); 
 
    document.write("<p> The sum of all elements in the array is " + s + "</p>"); 
 
    } 
 
} 
 

 
function sum() { 
 
    var t = 0; 
 
    for (var i = arr.length; i--;) t += parseInt(arr[i]); 
 
    return t; 
 
}

相關問題