(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
好问题。实际上,如果你把它作为一个完整的陈述,你所拥有的假设是可行的。例如
TreeType tree =
(Math.random() > 0.75) ? (type = TreeType.BIG_TREE) :
(type = TreeType.TREE);
编译得很好(当然,假设您要分配type
给 typeTreeType
的东西)。请注意,我所做的只是添加TreeType tree =
(并添加括号以处理操作顺序)。这是因为赋值实际上返回一个值,特别是右侧评估的任何值。
明显地,
type = (Math.random() > 0.75) ? TreeType.BIG_TREE : TreeType.TREE
将是首选,因为它更简洁和可读。
根据:http: //java.about.com/od/t/g/ternaryoperator.htm
第一个操作数是一个布尔表达式;如果表达式为真,则返回第二个操作数的值,否则返回第三个操作数的值。
我相信你看到的是赋值完成后返回的 type 的值。(我有一段时间没有做过 java 了,但很可能是这种情况。)你应该这样做:
type = (Math.random() > 0.75) ? TreeType.BIG_TREE : TreeType.TREE;