繁体   English   中英

如何验证算术表达式?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM