字符串变成数字和+,-,*和/ - Javascript方程计算器
Strings into numbers and +, -, * and / - Javascript Equation calculator
我正在研究一个'方程式计算器',但有一些问题。现在我可以插入我的方程了,但我希望它是数字,而不仅仅是数字:我希望所有的"+"、"-"、"*"answers"/"都是正确的东西。
现在我的代码是:
var ligning = prompt("Insert your equation here:");
var newLigning = ligning.split("=");
var sideOne = parseInt(newLigning[0],10);
var sideTwo = parseInt(newLigning[1],10);
var calculator = function() {
};
alert(sideOne);
alert(sideTwo);
更具体地说,这里有一个例子:
"1 + 2 = 3"应该提醒3,然后再次提醒3(因为底部有两个警报)-我怎么做呢?
而不是:
var sideOne = parseInt(newLigning[0],10);
你可能想要一些这样的东西:
var sideOne = performMath(newLining[0],10);
地点:
function performMath(equation) {
//CODE HERE
}
performMath
可以通过几种方式完成。你需要拆分方程,得到两个之间的数字和方程。这可以递归地完成!
我认为这可能是一个很好的起点。
编辑
与这个问题无关,如果你开始考虑操作优先级(PEDMAS),这是一个稍微困难的任务。方法是一样的,performMath
需要稍微复杂一点。在这种情况下,我建议用某种数组结构来存储数字,用另一种数组结构来存储方程。
编辑2
Paul S
还在开始之前对字符串进行了很好的消毒。你不能假设有人会输入一个等式。编程时Rich Cook说:
"今天的编程是软件工程师之间的竞赛建立更大更好的防白痴程序,宇宙在尝试制造出更大更好的白痴。到目前为止,宇宙赢了。"
3
编辑这一小段代码应该有点帮助…无论如何,这可能不是最有效的代码…
var equation = "1+22-3";
var operators = "+-*'/"
var currentNumber = "";
var numbers = new Array();
var operatorArray = new Array();
for(var i=0; i<equation.length; i++) {
var currentChar = equation.charAt(i);
if(operators.indexOf(currentChar) != -1) {
operatorArray[operatorArray.length] = (currentChar);
numbers[numbers.length] = (currentNumber);
currentNumber = "";
} else {
currentNumber = currentNumber + currentChar;
alert(currentNumber);
}
}
numbers[numbers.length] = currentNumber;
alert("numbers : " + numbers);
alert("operators : " + operatorArray);
现在您所要做的就是遍历数组并执行适当的操作。
eval
真的很糟糕,很容易被滥用,但是如果你知道你只接受数字和特定的操作符,那么你也可以做一些字符串消毒,使它更安全
var ligning = prompt("Insert your equation here:"),
newLigning = ligning.split("="),
lhs = newLigning[0],
rhs = newLigning[1];
function calculate(expr) {
var s;
expr = expr.replace(/[^'d*/()+-]/g, ''); // remove everything except permitted
if (expr !== (s = expr.replace(/^[*/]*|[*/+-]*$/g, ''))) {
expr = s; // don't allow * or / at the ends
console.warn('Removing invalid operators');
};
return +eval(expr || 0); // + implicit converts to number
};
console.log(lhs = calculate(lhs), rhs = calculate(rhs), lhs === rhs);
alert ( eval(newLigning[0]) );
alert ( eval(newLigning[1]) );
相关文章:
- JavaScript如何处理多变量方程
- Javascript:创建一个随机数学方程数组作为对象,20次
- 用于创建数学减法方程的简单JavaScript算法
- 重写 Javascript 方程
- 将一个方程写入Javascript
- 验证指数方程的 Javascript 函数
- 在JavaScript中使用随机数和操作符生成一个随机数学方程
- 试图从文本框中获取值,并将其用于Javascript中的数学方程(卷)
- 如何在Javascript方程中引用表单字段
- 让Javascript计算器做一个方程,如(5-3+2)只有两个数字输入
- Javascript - X是X函数/方程的百分比
- 数学方程验证正则表达式的javascript
- 如何使用javascript分离方程中的数字和特殊字符
- 使用JavaScript动画MathJax方程
- Javascript 正则表达式在数学方程中查找变量
- 使用求和方程JAVASCRIPT将它们转换为数字的单词块
- Javascript-找到指数方程的基础
- 在javascript中查找Antilog并在javascript中求解n次多项式方程
- JavaScript/jQuery 方程求解器
- 字符串变成数字和+,-,*和/ - Javascript方程计算器