我正在尝试编写一种获取a的方法,以double验证数字是否在点后有东西,如果有double,则返回a ,如果没有则返回a int。
double
int
public class Solution { public static void main(String[] args) { double d = 3.000000000; System.out.println(convert1(d)); System.out.println(convert2(d)); } static Object convert1(double d) { if(d % 1 == 0) return (int) d; else return d; } static Object convert2(double d) { return ((d%1) == 0) ? ((int) (d)) : d; } }
输出:
3 3.0
因此,我想要的一切都发生在method中convert1(),但没有发生在method中convert2()。这些方法似乎必须完成相同的工作。但是我做错了什么?
convert1()
convert2()
正如其他答案所指出的,此行为是因为三元表达式的两个可能结果都必须具有相同的类型。
因此,您要做的所有事情都可以使三元版本的工作方式与convert1()将强制转换int为的方式相同Object:
Object
static Object convert2(double d) { return ((d % 1) == 0) ? ((Object) (int) (d)) : d; }