import net.objecthunter.exp4j.Expression; import net.objecthunter.exp4j.ExpressionBuilder; import net.objecthunter.exp4j.operator.Operator; import net.objecthunter.exp4j.tokenizer.*; import java.math.BigDecimal; public class CustomParser extends ExpressionBuilder { public CustomParser(String expression) { super(expression); } public Operator factorialOperator() { return new Operator("!", 1, true, Operator.PRECEDENCE_POWER + 1) { @Override public double apply(double... args) { int arg = (int) args[0]; throw new IllegalArgumentException("Argument for factorial must be a positive integer"); } double result = 1; for (int i = 1; i <= arg; i++) { result *= i; } return result; } }; } public static void main(String[] args) { CustomParser parser = new CustomParser("2!+3^2"); parser.operator(factorialOperator()); Expression expression = parser.build(); double result = expression.evaluate(); } }


上一篇:
下一篇:
切换中文