我是 JavaScript 初学者。
这段代码应该计算后缀表达式。 但这不起作用。我认为代码非常合乎逻辑,但我真的不知道它出了什么问题。
如果有人能帮助我,我将不胜感激!
<html>
<head>
</head>
<body>
<!-- starting javaScript -->
<script type = "text/javascript">
var postStr = "123++"; //initial postfix expression
var postArr = new Array();
postArr = postStr.split(""); //string.split() turns string into array!
for(var i=0; i<postArr.length; i++)
document.write("value"+postArr[i]+"<br>");
var stack=[];
var result;
var firstNum;
var secNum;
//var k;
for(var i=0; i<postArr.length; i++)
{
if((postArr[i]!="^")||(postArr[i]!= "+")||(postArr[i]!= "-")|| (postArr[i]!= "*")||(postArr[i]!= "/"))
{
stack.push(postArr[i]);
//document.write("length" + stack.length);
}
else if((postArr[i]=="^")||(postArr[i]== "+")||(postArr[i]== "-")||(postArr[i]== "*")||(postArr[i]== "/"))
{
if(postArr[i]=='+')
{
firstNum=stack.pop();
secNum=stack.pop();
result = secNum + firstNum;
stack.push("result = " + result);
}
else if(postArr[i]=='*')
{
firstNum=stack.pop();
secNum=stack.pop();
result = secNum * firstNum;
stack.push("result = " + result);
}
else if(postArr[i]=='/')
{
firstNum=stack.pop();
secNum=stack.pop();
result = secNum / firstNum;
stack.push("result = " + result);
}
else if(postArr[i]=='-')
{
firstNum=stack.pop();
secNum=stack.pop();
result = secNum - firstNum;
stack.push("result = " + result);
}
}
}
var finalRes=stack.pop();
document.write(finalRes);
</script>
</body>
</html>
最佳答案
有一些错误:
您的第一个条件应以
and
分隔。 (&&
) 运算符而不是or
因为您使用的是否定条件既然您将字符串转换为数字,请不要忘记将字符转换为整数(例如
+postArr[i]
)您应该推送结果,而不是带有注释的字符串(
stack.push(result)
而不是stack.push("result = " + result)
)。
查看这个jsfiddle:http://jsfiddle.net/scaillerie/GwDTM/2/ .
关于JavaScript。中缀到后缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13918115/