2012-05-14 65 views
0

我想用輸入的字符串生成一些條件。
例如,我得到在字符串「長= 15」,我想創建的條件: 長度== 15. 更具體地說,我有一個int在我的程序稱爲長度和它被設置爲特定值。
我想從用戶獲得一個條件作爲輸入(「長度< 15」或「長= 15」....)並創建一個if語句來生成條件並對其進行測試。
這樣做的最好方法是什麼?
非常感謝
Java - 從字符串生成條件

+2

你真的不需要我們這個。只需閱讀字符串操作/解析以及如何從字符串轉換爲int。檢查出split()。 – keyser

+3

你有多少種不同的操作員?你有多少變數可以匹配? (長*重/大+ 14> = sin(PI) - abs(k)*foobar²|| n <-z)是否可能檢查? –

+1

我認爲這會有所幫助。 http://stackoverflow.com/questions/3422673/java-evaluate-string-to-math-expression 問候 – Uzair

回答

1

除非你在談論的代碼生成(即產生由輸入字符串的Java代碼),你不能基於字符串的if語句。

您必須爲您的條件語言編寫解析器,並解釋生成的解析樹。

它到底會是這個樣子:

Condition cond = ConditionParser.parse("length = 15"); 

if (cond.eval()) { 
    // condition is true 
} 
0

根據您可以在您輸入的格式放在什麼限制,你可以考慮使用犀牛嵌入的JavaScript。您的'條件'則必須是有效的JavaScript代碼。像這樣(免責聲明:沒有編譯它):

import javax.script.*; 

public bool evalCondition (Object context, String javascript) { 
    ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript"); 
    Object result = engine.eval(javascript); 
    Boolean condTrue = (Boolean)result; 
    return condTrue; 
} 

查看Embedding Rhino Tutorial瞭解更多詳情。