【发布时间】:2017-06-10 23:16:16
【问题描述】:
我正在尝试在 Angular.js 中实现一个简单的逆波兰表示法计算器,到目前为止,该代码可以处理一位数的计算,例如
2 3 +
如何修改它以处理多于一位的输入,例如:
122 233 +
这是我参加这个discussion后想到的一个想法)。我怀疑我可能不得不使用 onkeypress 和 parseInt 和/或 parseFloat 但我不确定。我期待着你的想法。谢谢。
JavaScript:
var calcApp = angular.module('calcApp', []);
calcApp.controller('calcCtrl', function ($scope) {
$scope.leftOperand = "";
$scope.operator = "";
$scope.rightOperand = "";
$scope.answer = "";
$scope.setOperand = function (operandEntered) {
($scope.leftOperand)
? $scope.rightOperand += operandEntered + " "
: $scope.leftOperand += operandEntered + " ";
console.log($scope.leftOperand,$scope.rightOperand);
};
$scope.setOperator = function (operatorEntered) {
$scope.operator = operatorEntered;
};
$scope.getAnswer = function () {
var result = $scope.leftOperand + $scope.operator + $scope.rightOperand;
var answer = eval(result);
if (answer % 1 !== 0){ // % 1 to identify floats
$scope.answer = answer.toFixed(2);
}
else {$scope.answer = answer;}
$scope.leftOperand = $scope.answer;
$scope.operator = "";
$scope.rightOperand = "";
};
$scope.setClear = function (a) {
$scope.leftOperand = "";
$scope.operator = "";
$scope.rightOperand = "";
$scope.answer = "";
};
});
【问题讨论】:
-
这个问题太宽泛了。您是在询问语法解析,还是在请人就更复杂的应用程序给您建议?如果您正在寻求建议,StackOverflow 是错误的地方。
-
本质上,我问的是如何编写代码以使输入值大于一位操作数。几年前我自己在 Windows 环境中用 C 语言做过这个,所以我知道它可以做到。
-
你真的应该尝试一下,所以你有一些代码可以展示。像这样的问题总是因为过于宽泛、基于意见或只是“为我编写代码”而被关闭。您可以通过在问题中将您的尝试显示为实际格式化的代码块来真正改善您的答案。
-
将输入解析为字符串,比跟踪哪个点击属于哪个数字更容易
-
@Dale,不错的建议——我会去看看。
标签: javascript angularjs calculator