2014-01-26 94 views
4
private String boundaries = "(x > 750) & (x < 900)"; 
if (boundaries) { 
//Do stuff 
} 

我希望能夠使用字符串作爲if子句中的變量,然後獨立更改字符串而不必編輯代碼本身。這個例子的想法不起作用,我想知道是否有錯誤或者不使用字符串的方式。在if語句中使用字符串作爲變量子句

謝謝。

+0

http://stackoverflow.com/questions/935175/convert-string-to-code – Ogen

+0

什麼是你想要做什麼?我的意思是,你想解決什麼問題?回答這個問題可能比較簡單,而不是你所問的。 – Darkhogg

+0

@Clay沒有看到,謝謝。 – user3144201

回答

8

Java是不是動態編譯的語言,所以如果你想evaaluate這樣的表達,你可以從Java使用JavaScript。

試試這個代碼:

 String boundaries = "(x > 750) & (x < 900)"; 
     ScriptEngineManager manager = new ScriptEngineManager(); 
     ScriptEngine engine = manager.getEngineByName("javascript"); 

     engine.eval("var x = 810;"); // Define x here 
     engine.eval("var bln = false;") 
     engine.eval("if (" + boundaries + ") bln = true; ") 
     if((boolean)engine.eval(bln)) { 
      // Do stuff 
     } 

希望這有助於。 參考:Oracle: Java Scripting Programmer's Guide

+0

+1你需要在任何地方定義一個綁定到'x'嗎? –

+1

+1:參考:http://docs.oracle.com/javase/6/docs/technotes/guides/scripting/programmer_guide/index.html?utm_source=twitterfeed&utm_medium=twitter –

+0

您需要通過engine.eval定義x 。 (見編輯) –

0

在這個意義上,Java不是一個動態編譯的語言。

你可以做的是使用beanshell在運行時編譯代碼,或使用JavaScript框架來實現表達式。

在Java中,最簡單的辦法是做

int min = Integer.parseInt(minAsString); 
int max = Integer.parseInt(maxAsString); 
if (x > min && x < max) { 
    // do stuff 
}