簡體   English   中英

Javascript計算器兩位數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM