栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

java验证四则运算公式的合法性(包含括号、字母、小数)

Java 更新时间:发布时间: 百科书网 趣学号
java验证四则运算公式的合法性(包含括号、字母、小数) 1.场景描述

在实际的业务中,一个测点需要根据其他多个已知测点计算得出,在页面中输入计算公式,需要调用后台接口验证计算公式的合法性。比如验证a乘以2,m乘以2.0,(d002乘以2)加上2,(d*2)+,(e+3)/3,(ef001+3,1/1等合法性。

2.工具类示例
public class expressionUtils {

	
	public static boolean validateexpression(String expression) {

		//第一步:去掉算式中所有的合法项替换为"?"字符,去掉替换后算式中所有的空格
		expression = expression.replaceAll("((K|Z|C)\d\$(\d)+(\.(\d)*){0,1})", "?");
		expression = expression.replaceAll(" ", "");
		// 如果有两个相邻的项中间没有操作符,则算式不合法
		if (expression.matches("^??$")) {
			return false;
		}

		if (expression.matches("^(.)*max\(\?-\?,\d\)(.)*$")) {
			expression = expression.replaceAll("max\(\?-\?,\d\)", "?");
		}
		// 第二步:判断小括号左右括弧是否等同,括弧位置是否合法,如果括弧全部合法,则去掉所有括弧
		int num = 0;
		char[] expCharArray = expression.toCharArray();
		for (int i = 0; i < expCharArray.length; i++) {
			char temp = expCharArray[i];
			if (temp == '(') {
				num++;
			} else if (temp == ')') {
				num--;
			}
			if (num < 0) {
				return false;
			}
		}
		if (num > 0) {
			return false;
		}
		//去掉括号,进行验证
		expression = expression.replaceAll("\(|\)", "");
		// 最后一步:判断仅剩的+-*/四则运算算式是否合法,字母数字(增加包含小数)
		if (expression.matches("^(([a-zA-Z0-9\.]+[-+*/])*[a-zA-Z0-9\.]+([-+*/][a-zA-Z0-9\.]+)*)$")) {
			return true;
		} else {
			return false;
		}

	}
	
}
3.验证

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/273308.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号