(Math.random() > 0.75) ? type = TreeType.BIG_TREE : type = TreeType.TREE
根據控制檯,而不是一個變量如何(Math.random()> 0.75)返回一個值?上述語句是if-else階梯的一部分。邏輯語句不返回一個變量,而是一個值
(Math.random() > 0.75) ? type = TreeType.BIG_TREE : type = TreeType.TREE
根據控制檯,而不是一個變量如何(Math.random()> 0.75)返回一個值?上述語句是if-else階梯的一部分。邏輯語句不返回一個變量,而是一個值
你想下面
type = (Math.random() > 0.75) ? TreeType.BIG_TREE : TreeType.TREE
Oooohhhhhh,謝謝。是的,現在這很明顯。 –
然而'type = TreeType.BIG_TREE'仍然返回一個值;是什麼使它不同於另一種聲明,如「x + y」?這裏'type'的位置並不是完整的問題。 – arshajii
據:http://java.about.com/od/t/g/ternaryoperator.htm
第一個操作數是一個布爾表達式;如果表達式爲真,則返回第二個操作數的值,否則返回第三個操作數的值。
我相信你看到的是在賦值完成後類型的值被返回。 (我有一段時間沒做過java,但情況可能如此。)您應該改爲:
type = (Math.random() > 0.75) ? TreeType.BIG_TREE : TreeType.TREE;
好問題。其實你有可以假設工作如果你把它作爲一個完整的陳述。例如
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
將是優選的,因爲它是更簡潔和可讀性。
你的問題是什麼?你有什麼錯誤嗎? –
Java中沒有「返回變量」。你的問題沒有意義。 – EJP