java 公式验证架构_验证公式正确性 java下的正则表达?

验证公式的正确性目前我认为在java下用正则表达式比较好实现,但是正则表达式我不太会公式的的是第一位为K或Z或C;第二位是数字,例如0;第三位是$,即美元;第四位以后是数字,但是位...

验证公式的正确性

目前我认为在java下 用正则表达式比较好实现,但是正则表达式我不太会

公式的的是第一位为K或Z或C;第二位是数字,例如0;第三位是$,即美元;第四位以后是数字,但是位数不限,可以有小数点。以上规则例如是Z0$1001.98是符合规则的。

可以函数,例如max(Z1$1001-Z1$1001,0),或是If {Z0$1001<=0} then {0} else {Z0$1001}

公式可以是

1、Z0$1001.98

2、Z0$1001.98+K0$1021.98

3、(Z0$1001.98+K0$1021.98)+Z0$1001.98

4、max(Z1$1001-Z1$1001,0)

5、(Z0$1001+K1$1001)+C2$1001-max(Z1$1001-Z1$1001,0)

6、max(Z1$1001-Z1$1001,0)+K0$1021.98+if{Z0$1001<=0} then {0} else {Z0$1001}

公式中所有参与运算的项都必须遵循

1、运算项定义

2、运算符保留字必须使用小写字符,包括:max,min,abs,round,if,then等

如果不是用正则表示式实现也可以,但是要在java下实现。

求高手帮忙,如果写得好还可以再加分!!

我的目的只是想验证公式的正确性,不一定全用正则表达式来实现。

用特殊的符号将所有的嵌套运算子包起来是不现实的,公式是用户输入的,用户不会整那么麻烦的。

我想了一下,我的思路是将Z0$1001等先替换为A,例如(Z0$1001.98+K0$1021.98)+Z0$1001.98替换为(A+A)+A。接着将A+A替换为A,则为(A)+A,再将(A)替换为A,则为A+A,再循环上几步。函数也是一样,例如将max(A,A)也替换为A。再不断循环,直到公式到不能再简化为止。最后如果公式简化为A,说明公式正确,否则报错!

至于替换可以用正则表达式实现。程序本来想贴出来,但是字数超过1000字了。

但是有两个问题。一个是不能提示用户错误的原因。二是我现在还要找到如Z0$1001中1001这个值,结合Z到后台去查询这个1001是否在Z的表中存在。目前这两个问题我还没想好。

刚看了你的算法,觉得很好。

最后等你写完了再给你加分吧。

我编程不太好,看出来你是高手,帮帮小弟吧。

现在对于提示错误的问题我还是很无助,例如ZE$122 这个是Z后的E是非法的,或则函数写错了,例如用户写max为mac之类的错误,该如何提示用户呢。还有如何在一个字符串中提取出Z0$234之类的信息。

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值