您的位置:首页 > 其它

简易四则运算,利用中缀转后缀表达…

2014-10-31 16:49 176 查看
package com.caculate;

import java.math.BigDecimal;

import java.util.Arrays;

import java.util.Stack;

public class Caculate {

    

    public
static void main(String[] args) {

  
   
 String str = "9+(3-1)*3+3/2";

  
   
 LastExpression le = new Lastexpression_r();

  
   
 le.toLastexpression_r(str);

  
   
 le.pop();//调用栈中剩下的符号元素

  
   
 String ss = le.getResult();

System.out.println(ss);

  
   
 LastCaculate lc = new LastCaculate();

  
   
 lc.caculate(ss);

System.out.println("result:"+lc.getResult());

    }

}

class LastExpression {

    Stack stack
= new Stack();

    int level =
0;

  
 StringBuilder sb = new StringBuilder();

    public void
toLastexpression_r(String str) {

  
   
 for(int i = 0;i

  
   
   
 if(str.charAt(i)>='0'&&str.charAt(i)<='9')
{

//  
   
   
   
 System.out.print(str.charAt(i));//数字直接输出

  
   
   
   
 sb.append(str.charAt(i));

  
   
   
 } else {

  
   
   
   
 operate(str.charAt(i));//处理各个符号

  
   
   
 }

  
   
 }

    }

    private void
operate(char ch) {

  
   
 switch(ch) {

  
   
 case '+':

  
   
 case '-':

  
   
   
 push(ch,1);break;

  
   
 case '*':

  
   
 case '/':

  
   
   
 push(ch,2);break;

  
   
 case '(':

  
   
   
 push(ch,0);break;

  
   
 case ')':

  
   
   
 push(ch,3);break;

  
   
 default:break;

  
   
 }

    }

    

    private void
push(char ch,int priority) {

  
   
 if(priority == 0) {

  
   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: