今天有个需求,要从数据库取计算公式和相关的变量值,最后进行计算并返回结果.
于是写了以下辅助计算的类
package com.hzsh.util;
import org.junit.Test;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CalculateUtils {
static final String symbol = "+-×÷*/()"; // 运算符
static final String[] priority = {
"+-", "×÷*/", "()"}; // 运算符优先级
@Test
public void testCalculate() throws Exception {
System.out.println(getResultByStrCal("3.5*3.3/(4.5-1.2)+1.5-1.01"));
}
/**
* 运算符比较器
*/
static Comparator<String> comp = new Comparator<String>() {
public int compare(String s1, String s2) {
int n1 = 0, n2 = 0;
for (int i = 0; i < priority.length; i++) {
if (priority[i].indexOf(s1) >= 0) {
n1 = i;
}
if (priority[i].indexOf(s2) >= 0) {
n2 = i;
}
}
return (n1 - n2);
}
};
// double 小数点处理
public double getResultByDouble(double doublevale, int len)<