java 判断公式正确_java中验证公式是否书写正确
时间: 2024-02-22 22:07:44 浏览: 26
Java 中可以使用数学表达式解析库来验证公式是否书写正确,例如使用 Apache Commons Math 库中的 ExpressionParser 类。下面是一个简单的示例:
```java
import org.apache.commons.math3.analysis.function.Exp;
import org.apache.commons.math3.analysis.function.Sin;
import org.apache.commons.math3.analysis.function.Sqrt;
import org.apache.commons.math3.analysis.function.Tan;
import org.apache.commons.math3.analysis.parser.Expression;
import org.apache.commons.math3.analysis.parser.ExpressionParser;
public class FormulaValidator {
public static boolean validate(String formula) {
ExpressionParser parser = new ExpressionParser();
Expression expression = parser.parse(formula);
double x = 1.0; // 可以设置变量的值进行计算验证
double result = expression.evaluate(x);
return !Double.isNaN(result) && !Double.isInfinite(result); // 判断计算结果是否合法
}
public static void main(String[] args) {
String formula1 = "sin(x) + cos(x)"; // 正确的公式
String formula2 = "sqrt(x) - 2"; // 错误的公式,sqrt 函数参数不能为负数
String formula3 = "tan(x) / (1 - cos(x))"; // 错误的公式,除数不能为 0
System.out.println(validate(formula1)); // true
System.out.println(validate(formula2)); // false
System.out.println(validate(formula3)); // false
}
}
```
在上面的示例中,我们使用了数学表达式解析库中的 ExpressionParser 类来解析公式,并且可以通过 evaluate 方法计算公式的值。在计算之前,我们可以设置变量的值进行验证,例如上面示例中的 x 变量。最后,我们还需要判断计算结果是否合法,例如不能为 NaN 或 Infinity。