微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JS中的Postfix算法评估

如何解决JS中的Postfix算法评估

这是我们的开始:'7.7+7' 函数的输入是字符串数组(原始输入转换为后缀):7.7,7,+

然后将反馈给另一个函数,以便在我的html页面显示。此函数嵌套在另一个函数中,可与类对象一起调用

this.postfixEval = function(postfixArray){
        var stack = new Stack();

        for( element of postfixArray){
            console.log("element: " + element);

            if(isNaN(element)){
                var x = stack.pop();
                var y = stack.pop();
                console.log("var x/y: " + x + " " + y + " element: " + element) ;
                if (element == "+"){
                    result = (y+x);
                    console.log("Expected Result: " + result)
                    stack.push(y + x);
                } else if (element == '-'){
                    stack.push(y - x);
                } else if (element == '*'){
                    stack.push(y * x);
                } else if (element == '/'){
                    stack.push(y / x);
                }
            } else {
                stack.push( parseFloat(element) );
            }
        }
        //final check for non numbers within the stack
        var returnValue = null;
        while( !stack.isEmpty() ){
            stack.print();
            var element = stack.pop();  
            if(isNaN(element)){
                continue;
            } else{
                returnValue = element;
            }
        }
        return returnValue;
    }

我不确定自己在做什么错?输出仅为7.7。这是尝试调试的日志记录示例:

scripts.js:75 postFix: 7.7,+ 
scripts.js:145 undefined
scripts.js:175 element: 7.7
scripts.js:175 element: 7
scripts.js:175 element: + 
scripts.js:180 var x/y: 7 7.7 element: + 
scripts.js:76 result: null

感谢您的时间和事先的帮助。

解决方法

如果我用一个简单的数组替换您的"If" label.numberOfLines = <1,"then",label.font = UIFont.boldSystemFont(ofSize: 42) ,并进行必要的调整以适应该更改,我将获得正确的答案...

new Stack

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。