2012-12-25 22 views
0

我是新來的java ..所以也許這就是爲什麼我沒有得到關鍵字的權利?聲稱不工作的方式,我認爲在java

所以..我從那個銀行客戶的例子寫了一個快速課,其中一個方法被撤銷。

public void withdraw(double d){ 
     double diff = balance - d; 
     assert (diff>=0) :" Insufficient funds!"; 
     balance = diff; 
    } 

所以,我正打算是,如果退出abount大於餘額的..然後扔了一個錯誤......(我想應該是更像是一個例外....但可以說,我想要斷言檢查)...

但它沒有做任何事情..即使當DIFF小於零..

代碼編譯罰款..而我希望它拋出了一個錯誤。

我做錯了什麼

+2

如果該方法的先決條件是:「任何提取金額」,那麼您對斷言的使用是不正確的。前提條件是「<=餘額」是正確的 – nhahtdh

+0

@nhahtdh:感謝提示:) – Fraz

+0

您可能還想確保負數或NaN未被撤銷。 –

回答

5

默認情況下,斷言是禁用的。您可以通過在調用JVM時傳遞-enableassertions標誌來啓用所有斷言。

[編輯]

您可以找到Java編程使用斷言引導here。注意啓用和禁用斷言的位。

+0

哦..我該怎麼做? – Fraz

+1

當你運行'java'命令時,在'java'位後立即加上'-enableassertions' –

+0

有沒有辦法配置eclipse? – Fraz

5

默認情況下,斷言並未啓用,您需要在運行Java應用程序時明確啓用它們,例如,

java -ea SomeClass 
+0

@Hansanein ..我正在使用eclipse ..我如何在eclipse中啓用它? – Fraz

+1

從eclipse中,右鍵單擊要運行的類然後選擇run as> run configurations> arguments選項卡,然後在JVM選項內輸入-ea –

相關問題