我是靠谱客的博主 疯狂棉花糖,最近开发中收集的这篇文章主要介绍js实现四则运算,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

js实现四则运算
思路:
    把输入的中缀表达式转成后缀表达式,利用正则表达式来处理数字,然后利用栈来得出结果。
代码:

<script>

  var Stack = function(){}
            
            Stack.prototype={
                Init:function(){
                    this.STACKMAX = 100;
                    this.stack = new Array(this.STACKMACK);
                    this.top = -1;
                    return this.stack;
                },
                isEmpty:function(){
                    if(this.top==-1){
                        return true;
                    }
                    else{
                        return false;
                    }
                },
                push:function(elem){
                    if(this.top==this.STACKMAX-1){
                        return "栈满";
                    }
                    else{
                        this.top++;
                        this.stack[this.top] = elem;
                    }
                },
                pop:function(){
                    if(this.top==-1){
                        return "空栈,无法删除栈顶元素!";
                    }
                    else{
                        var x = this.stack[this.top];
                        this.top--;
                        return x;
                    }
                },
                peek:function(){
                    if(this.top!=-1){
                        return this.stack[this.top];
                    }
                    else{
                        return "空栈,顶元素无返回值!";
                    }
                },
                Clear:function(){
                    this.top=-1;
                },
                Length:function(){
                    return this.top+1;
                }
            }

</script>
<script type="text/javascript">



function getBackExpre(s){
	
	var list=new Array();
	var op=new Stack();
	op.Init();
	//var num=str.match(/d+(.d+)?/g);
	var i=0;
	while(i<s.length){
		var c=s.charAt(i);
		if(c>='0'&&c<='9'){
			var s1=s.substr(i);
			var m=s1.match(/d+(.d+)?/g);
			if (m.length>0){
				s1=m[0];
				list.push(s1);
			}
			
			i=i+s1.length;
			continue;
		}else if(c=='('){
			op.push(c);
		}else if(c==')'){
			var p=op.pop();
			while(p!='('){
				list.push(p);
				p=op.pop();
			}
		}else if(c=='+'||c=='-'){
			while(!op.isEmpty()&&(op.peek()=='+'||op.peek()=='-'||op.peek()=='*'||op.peek()=='/')){
				list.push(op.pop());
			}
			op.push(c);
		}else if(c=='*'||c=='/'){
			while(!op.isEmpty()&&(op.peek()=='*'||op.peek()=='/')){
				list.push(op.pop());
			}
			op.push(c);
		}
		i++;
	}

	while(!op.isEmpty()){
		list.push(op.pop());
	}
	
	return list;
	
	
}
function g(a,b,c){
	var v=0;
	a=parseFloat(a);
	b=parseFloat(b);
	
	switch (c)
    {
    case '+':
        v=a+b;
        break;
    case '-':
        v=a-b;
        break;
    case '*':
        v=a*b;
        break;
    case '/':
        v=a/b;
        break;
    }
    return v;
	
}
function getResult(list,result){
	
	for (var i=0;i<list.length;i++){
	
		if(!isNaN(list[i])){
			result.push(list[i]);
			
		}else{
			var b=result.pop();
			var a=result.pop();
			var v=g(a,b,list[i]);
			
			result.push(v);
			
		}
		
	}
	return result.pop();
	
}

</script>
<script>


var str = window.prompt("input",str)  ;
//str 为要输入的四则运算表达式,b为结果
 //var str="1.1+2.0*(3.0+4.0)";
 var list=getBackExpre(str);
 var result=new Stack();
 result.Init();
 var b=getResult(list, result);
 document.write(b);

</script>





测试:








最后

以上就是疯狂棉花糖为你收集整理的js实现四则运算的全部内容,希望文章能够帮你解决js实现四则运算所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部