2011-08-21 57 views
-5

我在Java中玩弄ternary operator時突然想到了這個問題。在PHP中,我們可以使用三元運算的決定,然後把一些命令(或標籤)主文檔中像這樣的(一個例子來自PHP手冊):使用非腳本語言的腳本行爲

echo (true?'true':false?'t':'f'); 

現在,類似這樣的東西在Java中可能嗎?喜歡,是否有類似於下面的代碼可能?

jButton1.getText().equals("hi")?jLabel1.setText("one"):jLabel1.setText("two") 

我想要的是,只有一個語句應該根據真/假值執行。我知道這可以通過使用if-else構造來完成,但我只是好奇而問這個問題。

+0

當您嘗試時發生了什麼? –

+4

這與「腳本」行爲無關。它只是一個三元運算符。 –

+0

如果沒有布爾變量被使用,並且如果我使用語句像** boolean b1 = jButton1.getText()。equals(「hi」)?jTextField1.setText(「一個「):jTextField1.setText(」two「); **然後它顯示typeincompatible錯誤。 – buch11

回答

3

使用這個代替:

jLabel1.setText(jButton1.getText().equals("hi") ? "one" : "two"); 

按照JLS,這種操作被稱爲Java中的conditional operator。可以通過閱讀前面的鏈接

它是第二或第三操作數 表達編譯時誤差爲空隙方法

0

或調用看到:

jButton1.getText().equals ("hi") && jLabel1.setText ("one") || jLabel1.setText ("two"); 

JRL解決方案更優雅,但如果您想操縱不同的標籤,取決於「嗨」,您可能需要這種方法。

0

Java肯定有一個三元運算符。它看起來像你正確使用它。如果它給我提供了一些問題,我會嘗試使用括號,但看起來你正確地使用它。

Java Term of the Week: Ternary Operator雖然解釋它。