2012-02-22 207 views
2

我遇到了應該導致在iReport中顯示或隱藏樂隊的表達式的困難。如何將正確的表達式寫入布爾值? (無法從布爾值轉換爲布爾值)

這些是我的變量:

Integer mainGroupInt = Integer.valueOf(5); 
Integer subGroupInt = Integer.valueOf(5); 
Boolean showDetailGroup = Boolean.valueOf(false); 

的結果必須是一個Boolean,所以我嘗試了以下內容:

mainGroupInt.intValue() != 0 && subGroupInt.intValue() != 0)) || (mainGroupInt.intValue() != 0 && showDetailGroup) 

這因此不能正常工作,我得到以下錯誤:

The expression of type boolean is boxed into Boolean

我正在推翻這一個,但我無法解決它。

感謝您的幫助。

+0

所以...這個工程,但你希望它更優雅? – FrustratedWithFormsDesigner 2012-02-22 19:09:17

+1

不,不幸的是,它不工作,我得到了錯誤更新在我的文章。 – adis 2012-02-22 19:12:22

回答

2

您是否在尋找...

showDetailGroup = Boolean.valueOf((mainGroupInt.intValue() != 0 && subGroupInt.intValue() != 0) || 
            (mainGroupInt.intValue() != 0 && showDetailGroup.booleanValue())) 

如果沒有,我不明白你的問題。上面的代碼返回代表boolean表達式的值的Boolean。請參閱Java Boolean.valueOf()Boolean.booleanValue()文檔。

+0

這不起作用。它在showDetailGroup上給出錯誤,如果我嘗試這個。錯誤是:Boolean類型的表達式被解除布爾值。 – adis 2012-02-22 19:15:05

+0

@adis,我編輯了我的答案。您還需要在布爾表達式(.booleanValue()方法)中將布爾值轉換回布爾值。最初我沒有注意到。 – 2012-02-22 19:16:51

+0

正確,這個作品,謝謝! – adis 2012-02-22 19:20:18

1

布爾值(大寫字母B)不能在布爾表達式中使用而不拆開它。

如果你想保持沉默的警告,通過調用booleanValue函數轉換布爾值基本類型(這是發生了什麼事與拆箱幕後):

mainGroupInt.intValue() != 0 && showDetailGroup.booleanValue() 
1

布爾和整型是原語布爾包裝類和int。您應該將變量更改爲布爾型和整型,並在稍後通過引用函數來傳遞它們時將其包含在內。