四则复杂运算表达式校验,包含小数 java实现
时间: 2024-02-11 14:23:23 浏览: 158
你可以使用正则表达式来校验四则运算表达式,包括小数。下面是一个简单的Java实现示例:
```java
import java.util.regex.Pattern;
public class ExpressionValidator {
public static boolean validate(String expression) {
// 匹配整数或小数
String numberRegex = "\\d+(\\.\\d+)?";
// 匹配四则运算符号
String operatorRegex = "[+\\-*/]";
// 匹配带括号的子表达式
String subExpressionRegex = "\\(" + numberRegex + operatorRegex + numberRegex + "\\)";
// 构建完整的表达式正则表达式
String regex = "^" + numberRegex + "(" + operatorRegex + numberRegex + "|" + subExpressionRegex + ")*$";
// 使用正则表达式校验表达式
return Pattern.matches(regex, expression);
}
public static void main(String[] args) {
String expression1 = "1+2*3";
String expression2 = "4/(2-3)";
String expression3 = "1.5+3.7/2";
System.out.println(validate(expression1)); // true
System.out.println(validate(expression2)); // true
System.out.println(validate(expression3)); // true
}
}
```
在上面的示例中,我们使用了正则表达式来匹配四则运算表达式。首先,我们定义了三个正则表达式:`numberRegex`用于匹配整数或小数,`operatorRegex`用于匹配四则运算符号,`subExpressionRegex`用于匹配带括号的子表达式。
然后,我们使用这些正则表达式构建了完整的表达式正则表达式。表达式以一个数字开始,后面可以跟随一个运算符号和数字,或者一个带括号的子表达式。整个表达式可以重复多次。最后,我们使用`Pattern.matches()`方法来校验输入的表达式是否符合正则表达式的规则。
在`main()`方法中,我们对几个示例表达式进行了校验,并输出结果。以上示例中的表达式都是合法的,所以输出结果都为`true`。
请注意,这只是一个简单的实现示例,对于更复杂的表达式可能需要更复杂的校验逻辑。此外,正则表达式可能不适用于所有情况,因为它们并不是用于解析算术表达式的最佳工具。在实际应用中,可能需要使用更强大的工具或库来处理复杂的算术表达式。
阅读全文