2013-07-01 118 views
-1
(Math.random() > 0.75) ? type = TreeType.BIG_TREE : type = TreeType.TREE 

根據控制檯,而不是一個變量如何(Math.random()> 0.75)返回一個值?上述語句是if-else階梯的一部分。邏輯語句不返回一個變量,而是一個值

+2

你的問題是什麼?你有什麼錯誤嗎? –

+0

Java中沒有「返回變量」。你的問題沒有意義。 – EJP

回答

8

你想下面

type = (Math.random() > 0.75) ? TreeType.BIG_TREE : TreeType.TREE 
+0

Oooohhhhhh,謝謝。是的,現在這很明顯。 –

+0

然而'type = TreeType.BIG_TREE'仍然返回一個值;是什麼使它不同於另一種聲明,如「x + y」?這裏'type'的位置並不是完整的問題。 – arshajii

0

據:http://java.about.com/od/t/g/ternaryoperator.htm

第一個操作數是一個布爾表達式;如果表達式爲真,則返回第二個操作數的值,否則返回第三個操作數的值。

我相信你看到的是在賦值完成後類型的值被返回。 (我有一段時間沒做過java,但情況可能如此。)您應該改爲:

type = (Math.random() > 0.75) ? TreeType.BIG_TREE : TreeType.TREE; 
2

好問題。其實你有可以假設工作如果你把它作爲一個完整的陳述。例如

TreeType tree = 
      (Math.random() > 0.75) ? (type = TreeType.BIG_TREE) : 
            (type = TreeType.TREE); 

編譯罰款(假設你分配到type類型TreeType東西,當然)。請注意,我所做的只是添加TreeType tree =(並添加括號以處理操作順序)。這是因爲分配實際上會返回一個值,特別是右側評估的值。

顯然,

type = (Math.random() > 0.75) ? TreeType.BIG_TREE : TreeType.TREE 

將是優選的,因爲它是更簡潔和可讀性。

相關問題