(Math.random() > 0.75) ? type = TreeType.BIG_TREE : type = TreeType.TREE
为什么(Math.random()> 0.75)根据控制台而不是变量返回一个值?上述陈述是if-else阶梯的一部分。
答案 0 :(得分:8)
您需要以下
type = (Math.random() > 0.75) ? TreeType.BIG_TREE : TreeType.TREE
答案 1 :(得分:2)
好问题。实际上,如果你把它作为一个完整的陈述,那么可以假设工作。 e.g。
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
会更受欢迎,因为它更简洁易读。
答案 2 :(得分:0)
根据:http://java.about.com/od/t/g/ternaryoperator.htm
第一个操作数是布尔表达式;如果表达式为true,则返回第二个操作数的值,否则返回第三个操作数的值。
我相信你看到的是返回完成赋值后的类型值。 (我有一段时间没有做过java,但情况可能就是这样。)你应该这样做:
type = (Math.random() > 0.75) ? TreeType.BIG_TREE : TreeType.TREE;