如何验证算术表达式?

时间:2014-03-25 02:35:41

标签: 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(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; 
   } 
} 

1 个答案:

答案 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意味着它不是有效的表达式。