《java执行字符串公式》由会员分享,可在线阅读,更多相关《java执行字符串公式(7页珍藏版)》请在金锄头文库上搜索。
1、ProgramService.javapackage com.goma.runstringregex;import java.math.BigDecimal;/* DESC:采用BigDecimal进行运算的简单封装* author Goma(OMA1989YEAH.NET)*/public class ProgramService/* param:String * 将Null转为Zero* return 0*/private String null2zero(String str)if (str = null | .equals(str)str = 0;return str;/* * 提供精
2、确的加法运算* param v1 被加* param v2 加数 * return 两个参数的和 */public String add(String v1, String v2)v1 = null2zero(v1);v2 = null2zero(v2);BigDecimal b1 = new BigDecimal(v1);BigDecimal b2 = new BigDecimal(v2);return b1.add(b2).toString();/* * 提供精确的加法运算* param params * return 两个参数的和 */public String add2(String
3、params)String v0 = null2zero(params0);BigDecimal b0 = new BigDecimal(v0);for (int i = 1; i = 0; i-) char c = str.charAt(i);if (!Character.isDigit(c) & c != .)break;sb.append(c);return sb.reverse().toString();/* DESC:获得表达式的的一位数字* param str* return 表达式的第一位数字*/private static String firstNumber(String s
4、tr) StringBuilder sb = new StringBuilder();for (char c : str.toCharArray() if (!Character.isDigit(c) & c != .)break;sb.append(c);return sb.toString();/* DESC:加减运算表达式计算* param str * return 计算结果*/private static String cacNoMD(String str) String ret = 0;StringBuilder sb = new StringBuilder();char sign
5、= +;for (char c : (str + +).toCharArray() if (!Character.isDigit(c) & c != .) if (sb.length() = 0)continue;if (sign = +) ret = ps.add(ret, sb.toString(); else ret = ps.sub(ret, sb.toString();sb = new StringBuilder();sign = c; else sb.append(c);return ret;public static void main(String args) String str = 1+1*2+(10-(2*(5-3)*(2-1)-4)+10/(5-0);System.out.println(cacComplex(str);