簡體   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