JavaScript。中缀到后缀

标签 javascript html infix-notation

我是 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>

最佳答案

有一些错误:

  1. 您的第一个条件应以 and 分隔。 ( && ) 运算符而不是 or因为您使用的是否定条件

  2. 既然您将字符串转换为数字,请不要忘记将字符转换为整数(例如 +postArr[i] )

  3. 您应该推送结果,而不是带有注释的字符串( stack.push(result) 而不是 stack.push("result = " + result) )。

查看这个jsfiddle:http://jsfiddle.net/scaillerie/GwDTM/2/ .

关于JavaScript。中缀到后缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13918115/

相关文章:

javascript - 如何进行 6 个以上并发 REST API 调用

javascript - 我不明白 javascript 中的函数返回

javascript - 如何让javascript打印出另一个对象中的对象中的属性

javascript - anchor 标记 href 与设置的内容不同

scala - 何时在 Scala 中缀表示法中使用括号

parsing - 在调车场处理额外的运算符(operator)

javascript - 比较日月年

PHP 在下拉列表中显示菜单树

javascript - 是否可以使用子元素作为中心来居中元素

c - 为什么当我读取这个文件并扫描 int 时,输出的数字非常大?