我需要编写一个程序,从用户那里获取三个数字,然后将这些数字传递给重载方法(我有一个double
和int
)。
我的问题是如何确定它是int
还是double
?
要获得输入,我正在这样做:
Scanner input = new Scanner( System.in );
double number1 = input.nextDouble(); // read first double
double number2 = input.nextDouble(); // read second double
double number3 = input.nextDouble(); // read third double
MyMathOps MyMathOps = new MyMathOps();
double result = MyMathOps.maximum( number1, number2, number3 );
System.out.println(result);
但如果他们进入int
怎么办?我希望能够确定这一点,并将其传递给int
maximum
方法。
答案 0 :(得分:5)
只需将所有输入视为double
,因为您支持浮点输入。仅仅因为输入恰好是整数而使用int
没有意义。
答案 1 :(得分:1)
number1,number2和number3都声明为双精度数。即使它们包含整数值,它们仍然是双倍的(即值1.0)。
如果你想知道它的double值也可以表示为Integer值,你可以将double转换为String:
String doubleString = Double.valueOf(number1)
在小数点周围分割字符串:
String[] split = doubleString.split("\\.");
然后检查小数部分只包含零:
boolean canBeInt = split[1].matches("0*");
如果是,则可以运行Integer.parseInt(split [0])并获取整数值(或者只将原始double转换为int)。
请注意,此解决方案不会检查最大整数值。
答案 2 :(得分:1)
实际上有几种方法可以做到这一点。例如,您可以使用input.next()
而不是input.nextDouble()
来解析返回的String以检查数据类型(它是否受Integer的最大值限制并且不包含小数部分)