2017-05-12 91 views
1

我已經編寫了一個程序,您可以在其中寫入控制檯,程序會告訴您表達式在算術上是否正確。說輸入是(12+1),輸出將是true無法阻止執行Java代碼

現在這裏是我在互聯網上發現的一段代碼,它將另外計算出(12+1)的解決方案。但是,我無法控制它的執行。我只希望它執行如果輸出是true。我怎樣才能做到這一點?這裏是我所嘗試過的,但代碼仍然執行:

讓我澄清; if執行雖然boolfalse

我希望你能告訴我如何解決它?因爲我需要另一個更長的代碼。

import javax.script.ScriptEngineManager; 
import javax.script.ScriptEngine; 
import javax.script.ScriptException; 

public class Supporter{ 
    public static void main(String[] args) throws ScriptException{ 
     ScriptEngineManager manager = new ScriptEngineManager(); 
     ScriptEngine engine = manager.getEngineByName("JavaScript"); 
     String str = "2+2"; 
     int counter=0; 
     boolean bool=false; 

     if(bool=true){ 
      System.out.println(engine.eval(str)); 
     } 
    } 
} 
+3

使用 '==' 測試相等。 '='分配。 –

+0

@JimmyM。哦哇,幫助,謝謝:) 雖然我很驚訝它不顯示爲錯誤.. – cnmesr

+2

添加到@ajimenez答案:如果你的變量已經是一個'布爾',你可以直接使用它,並不需要來比較它,因爲它只是評估另一個'布爾值'。 – QBrute

回答

5

你有一個小錯誤:你必須使用==的代替=

if(bool == true){ 
    System.out.println(engine.eval(str)); 
} 
+0

謝謝,這有助於:)也許你也可以告訴我爲什麼它沒有顯示爲錯誤,我沒有使用雙等號?在許多其他情況下,它是顯示的,例如當我們比較整數時。 – cnmesr

+2

是的,甚至更好:'if(bool)' – davidxxx

+0

它沒有顯示錯誤,因爲不是錯誤: 「=」操作符返回分配的值,所以你可以這樣想: int var1; int var2 =(va1 = 10);或者int var2 = var 1 = 10; 因此,var1和var2的值爲10; 對於布爾情況是相同的: if(bool = true)等於do: boole = true;如果(布爾)... 我希望我解釋得很好。 – ajimenez