如何使用重载方法(区分int或double)

时间:2012-03-14 02:59:05

标签: java overloading

我需要编写一个程序,从用户那里获取三个数字,然后将这些数字传递给重载方法(我有一个doubleint)。

我的问题是如何确定它是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方法。

3 个答案:

答案 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的最大值限制并且不包含小数部分)