Java 如何验证算术表达式?
我有一个程序,要求用户输入一个算术表达式,我如何验证表达式。例如:用户输入“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”都是有效的。 请帮帮我 这是我到目前为止所拥有的Java 如何验证算术表达式?,java,Java,我有一个程序,要求用户输入一个算术表达式,我如何验证表达式。例如:用户输入“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
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;
}
}
您可以使用
导入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
因此,如果出现异常,则表示它不是有效的表达式。递归下降解析器将很好地工作。请编写一些代码,即使它是错误的,并在此处展示所做的工作。如果您不做任何努力,没有人会浪费时间做您的家庭作业。@user3448414他的示例包含有效字符,但语法不正确;他需要一个语法解析器,比如递归下降或L解析器。谢谢,但我还是很困惑。我是java编程的初学者,你们能告诉我一些简单易懂的东西吗?