package com.ch.util;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Stack;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Calculate {
private static List sysboList=new ArrayList(){ {
this.add("+");
this.add("-");
this.add("*");
this.add("/");
this.add("%");
this.add("=");
}};
private static Pattern p1 = Pattern.compile("(^[0-9]{1,9}[.][0-9]{1,2}$)|(^[0-9]{1,11}$)");
public static BigDecimal result(String numstr){
//先把括号中的值给算出来然后替换,找的括号是最小范围的
//最后一个'('出现的位置 到 第一个')'出现的位置
StringBuffer sb=new StringBuffer(numstr.replaceAll("\\s*|\t|\r|\n", ""));
if(isStandard(sb.toString())){
String rs=bracketsString(sb);
while(rs!=null){
BigDecimal calBracketsValue = calBracketsValue(rs+"=");
sb.replace(sb.indexOf("@"), sb.indexOf("@")+1, calBracketsValue.toString());
rs=bracketsString(sb);
}
return calBracketsValue(sb.toString()+"=");
}
return new BigDecimal("0");
}
public static String brac