[英]how to validate an arithmetic expression?
我有一个程序要求用户输入算术表达式,我如何验证表达式。 例如:用户输入“1.2+3.4*(3.2+2.3)-12.1/3.4”,它会输出相同的表达式,因为它是有效的。 如果用户输入“/1.2”,会提示输入无效,请输入正确的表达式。 “* 1.2”、“1.2**3.4”、“1.2//3.4”和“1.2 + * 3.4”均视为无效。 但是,“-3+4”、“3++4”、“3*+4”和“3+-6”被认为是有效的。 请帮我。
这是我到目前为止所拥有的。
private static boolean validate(String s) {
if (s.isEmpty()) {
return false;
} else {
// remove all spaces
s = s.replaceAll("\\s+", "");
// remove all repeated char
// check if string contains only numbers and +-*/
String ValidChars = "+-*/().1234567890";
boolean result = true;
for (char c : s.toCharArray()) {
if (ValidChars.indexOf(c) == -1) {
result = false;
}
}
return result;
}
}
您可以使用import javax.script.*
脚本引擎管理器类。
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
现在你必须像这样评估你的表达式。
engine.eval(expression);//where expression is String in your case User Input
但是用try-catch
包围它,因为如果表达式无效,它将通过ScriptException
。
所以如果你得到 Exception 意味着它不是有效的表达。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.