[英]Javascript Calculator double digits
我正在嘗試制作一個簡單的計算器。 但是,在嘗試加,減,乘和除兩位數時遇到問題。 到目前為止,當我插入3時,它可以顯示我的聲音,但是如果再次按3,它將顯示另一個3而不是使它變成33。如何修復我的Javascript,以便能夠計算兩位數(甚至更多)的數字。 到目前為止,這就是我要解決的這個特定問題
var firstNumber;
var secondNumber;
var clear;
var operation;
function calculate() {
var answer;
if (operation == "+") {
answer = firstNumber + secondNumber;
} else if (operation == "-") {
answer = firstNumber - secondNumber;
} else if (operation == "*") {
answer = firstNumber * secondNumber;
}else if (operation == "/") {
answer = firstNumber / secondNumber;
}
firstNumber = answer;
displayAnswer(answer)
}
}
function DisplayOutput(data) {
var display = firstNumber + " " + operation + " " + secondNumber;
document.getElementById('answer').textContent = data;
}
function SaveNumber(number) {
if (firstNumber == undefined) {
firstNumber = number;
}else if (firstNumber != undefined) {
secondNumber = number;
}
DisplayOutput(number);
}
function Operation(op){
operation = op;
DisplayOutput(op);
}
function displayAnswer(answer){
document.getElementById('answer').textContent=answer;
}
function clearData(){
firstNumber = null;
secondNumber = null;
answer = 0;
DisplayOutput(answer);
}
我將在斯坦福大學的Objective-C課程中嘗試解釋保羅·哈格蒂(Paul Hagerty)使用計算器進行的操作。
添加一個變量,該變量可以跟蹤用戶何時按下數字。
例如...
var userIsInTheMiddleOfTyping = false;
當用戶按下數字時,此var會將其值更改為true,然后將新數字與已有數字連接起來。 當用戶輸入新數字時,您需要檢查此var,如果它是true,則再次連接。
當用戶按下一個操作數(+,-,x等)時,將var的值重置為false,因此它知道用戶已完成輸入數字,並且他輸入的下一個數字是一個新數字。
我相信當您輸入數字時,您會使用功能SaveNumber。
首先,您不需要在else之后的if,else已經是“ if(firstNumber!= undefined)”。
其次,如果放置前3個,則firstNumber會定義,因此您要更改secondNumber。 您需要做的是僅在插入運算符時將其更改為secondNumber。 為此,您可以創建一個輔助變量。
第三,您如何添加數字?
var isFirstNumber = true;
...
function SaveNumber(number) {
if (isFirstNumber) {
firstNumber = firstNumber*10; // This shifts the inserted digits to the left
firstNumber = firstNumber + number;
} else {
secondNumber = secondNumber*10;
secondNumber = secondNumber + number;
}
DisplayOutput(number);
}
在您處理輸入的地方,當您需要操作員時,應該執行以下操作:
isFirstNumber = false;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.