2013-07-06 42 views
3

嘿,我做了一個JavaScript計算器,並希望嘗試5 + 5它給我55然後10?如果我嘗試5/5它給我1罰款,如果我嘗試5 - 5它給我0罰款和相同的時間我不忍受我的代碼的問題也想嘗試console.log它不工作所以我用文件撰寫javascript計算器5 + 5 = 55?

這是我的代碼

var Plus = function() 
{ 
    var N1 = prompt("Enter first number"); 
    var N2 = prompt("Enter second number"); 
    var sum = (N1 + N2); 
    document.write(sum); 
} 

var Minus = function() 
{ 
    var N1 = prompt("Enter first number"); 
    var N2 = prompt("Enter second number"); 
    var sum = (N1 - N2); 
    document.write(sum); 
} 

var Division = function() 
{ 
    var N1 = prompt("Enter first number"); 
    var N2 = prompt("Enter second number"); 
    var sum = (N1/N2); 
    document.write(sum); 
} 

var Times = function() 
{ 
    var N1 = prompt("Enter first number"); 
    var N2 = prompt("Enter second number"); 
    var sum = (N1 * N2); 
    document.write(sum); 
} 

var Answer = prompt("Plus ?, Minus ?, Division ? or Times ?"); 

    if(Answer === "Plus") 
    { 
     Plus(); 
    } 
    else 
    { 
     if(Answer === "Minus") 
     { 
      Minus(); 
     } 
     else 
     { 
      if(Answer === "Division") 
      { 
       Division(); 
      } 
      else 
      { 
       if(Answer === "Times") 
       { 
        Times(); 
       } 
       else 
       { 
        document.write("How did you get here?"); 
       } 
      } 
     } 
    } 
+1

var sum =(+ N1 + + N2); – dandavis

+0

或var sum =(1.0 * N1 + 1.0 * N2) – Paul

回答

5

N1N2是字符串,而不是數字。將兩個字符串加在一起連接起來,這就是你的「錯誤」所在。

你需要把它解析爲數字:

var N1 = Number(prompt("Enter first number")); 
1

提示讓你輸入的字符串格式,你需要將其轉換成整數的整數加法操作。

2

這個原因適用於其他運營商,但不加上是因爲「a」+「b」=「ab」。

這就是說,你正在添加字符串。所以「5」+「5」=「55」

如果你先將它們轉換爲整數,它應該解決這個問題。

var sum = (parseInt(N1,10) + parseInt(N2,10)); 
+2

您應該傳遞一個基數參數給'parseInt':'parseInt(N1,10)'。沒有這些,一些瀏覽器可能會將具有前導零的數字解釋爲八進制數。 – Blender

+0

@Blender:好的電話...我從來沒有遇到過,但只是看着它確認。 –