如:[3*(7-2)+5*0.1]/5-0.1+{2*9/3-1}

解决方案 »

  1.   

    [3*(7-2)+5*0.1]/5-0.1+{2*9/3-1}  this is a right case?
    first u should specify the rules......
      

  2.   

    难度很大呀。用正则表达式不太好搞定吧?
    写表达式的逆波兰式,用两个堆栈:操作数堆栈sk1和运算符堆栈sk2.
    从左至右扫描表达式.如果扫描到的是操作数就压入sk1,否则(对运算符进行处理):
    1、如果当前运算符的优先级高于sk2顶的优先级,则当前运算符进栈;否则根据该运算符的性质(单目or双目等),从sk1中取操作数计算,并把结果压入sk1,然后继续该操作,直至当前运算符的优先级高于sk2顶的优先级
    2、对左、右括号要特别处理
    当扫到一个运算符的时候如果发现此时上次压栈的是运算符,那么肯定是错的,如果扫描完了堆栈中还有内容,那么说明表达式不完整,也是错的。当然错误条件不止这些,你可以再挖掘。
      

  3.   

    补充一句,可以参考一下这个:
    http://www.learnsky.com/bbs/printpage.asp?BoardID=6&ID=839
    例子是用vc实现的,转化成java就可以了,道理都是一样的。