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