我已经制作了在线计算器程序,但遇到了一些错误检查问题。这就是我想让我的程序检查的内容: 1.连续添加两个运营商。 2.除了负数之外,方程式不应该从运算符开始。 3.数字中不应超过一位小数。
非常感谢任何完成此任务的帮助。
这是我的代码的JavaScript部分。如果有人需要我的HTML部分,请问。我认为现在不重要。
<script type="text/javascript">
// Addings operators
var operatorEl = document.getElementsByClassName('operator');
// Adding btnElements
var btnElements = document.getElementsByClassName('addme');
//var to store user input and button input
var inputVal = '';
var buttonVal = '';
var display = document.getElementById('display');
var errorMsg = document.getElementById('error-msg');
function clearContent(){
display.value = '';
inputVal = '';
buttonVal = '';
errorMsg.innerHTML = '';
}
operatorEl[0].onclick = clearContent;
function backBtn() {
var dvLength = buttonVal.length;
buttonVal = buttonVal.substring(0,dvLength - 1);
display.value = buttonVal;
}
operatorEl[1].onclick = backBtn;
function calcCos(){
inputVal = display.value;
var newVal = Math.cos(inputVal);
display.value = newVal;
}
operatorEl[2].onclick = calcCos;
function calcSin() {
inputVal = display.value;
var newVal = Math.sin(inputVal);
display.value = newVal;
}
operatorEl[3].onclick = calcSin;
function calcSqrt(){
inputVal = display.value;
if(inputVal < 0){
errorMsg.innerHTML = 'Cannot calculate the square root of a negative number.';
display.value = '';
//return false;
}
var newVal = Math.sqrt(inputVal);
display.value = newVal;
}
operatorEl[4].onclick = calcSqrt;
function calcLog(){
inputVal = display.value;
if(inputVal < 1){
errorMsg.innerHTML = 'Cannot calculate the log of a non-positive number.';
display.value = '';
//return false;
}
var newVal = Math.log(inputVal);
display.value = newVal;
}
operatorEl[5].onclick = calcLog;
//When clicked the button's value will be added to the buttonVal and put into display
for(var i = 0; i < btnElements.length; i++){
btnElements[i].onclick = function (){
buttonVal += this.value;
display.value = buttonVal;
}
}
function evaluate(){
var evaluatedOutput = eval(buttonVal);
display.value = evaluatedOutput;
}
operatorEl[6].onclick = evaluate;
</script>
我的假设是检查这3个条件的代码将在这里的某处:
//When clicked the button's value will be added to the buttonVal and put into display
for(var i = 0; i < btnElements.length; i++){
btnElements[i].onclick = function (){
buttonVal += this.value;
display.value = buttonVal;
}
}
虽然如何在我的程序中实际表达这一点让我感到惊讶。在此先感谢大家。
答案 0 :(得分:0)
你应该使用标志来达到这个目的,这是最简单的方法。
使用一个在输入第一个字符后设置为false的标志,并在等号后再设置为true。
在输入一个运算符后使用一个设置为false的标志,如果下一个字符不是运算符,则再次设置为true。问题:23 + -3
使用您为第一个小数点设置为false的一个标志,并在最后一个数字(运算符或等号)后再次设置为true
这一切都非常接近proper parser更好的想法。 将在您开始实施括号时通过该点。