2016-12-28 199 views
-3

我創建了一個類來用作骨架來創建一個在遊戲中具有耐久性的項目(很像Minecraft中的選擇或者劍),並在創建一個包含三元操作符:Java三元運算符和同變量賦值

public void setMaxDurability(int newMax) { 
    newMax > MAX_DURABILITY ? maxDurability = MAX_DURABILITY : maxDurability = newMax; 
} 

此代碼在Eclipse中的「>」運營商拋出一個錯誤,說:「語法錯誤令牌‘>’ - >預期。」爲了澄清,newMax是設置變量maxDurability爲的新的最大耐久性,但它不能大於常數MAX_DURABILITY。所有類型都是int(並且常量是final),所以我不明白問題是什麼。

我設法方法,使用

public int setMaxDurability(int newMax) { 
    return maxDurability = (newMax > MAX_DURABILITY ? MAX_DURABILITY : newMax); 
} 

工作,但我想知道爲什麼第一個代碼塊沒有工作。任何幫助?

+3

的操作順序。 '?'和':'在'='之前。所以你所嘗試的是有效的'(newMax> MAX_DURABILITY?maxDurability)=(MAX_DURABILITY:maxDurability)= newMax;'根本沒有太多意義。 –

+0

順便說一句,你不需要改變返回類型爲「int」。您可以將其保留爲「void」並放棄「返回」。 –

+0

哦,好的。我知道我不必更改返回類型,這只是在嘗試調試後忘記切換回來的。那麼我假設你必須始終把任務交給三元運算符? –

回答

0

應該是:

public void setMaxDurability(int newMax) { 
    maxDurability = newMax > MAX_DURABILITY ? MAX_DURABILITY : newMax; 
}