我有一个程序要求用户输入算术表达式,如何验证表达式。例如:用户输入“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;
}
}
答案 0 :(得分:0)
您可以使用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意味着它不是有效的表达式。