Как использовать перегруженный метод (различать int или double) - PullRequest
1 голос
/ 14 марта 2012

Мне нужно написать программу, которая получает три числа от пользователя, а затем передает их перегруженному методу (у меня есть 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.

Ответы [ 3 ]

5 голосов
/ 14 марта 2012

Просто обработайте все входные данные как double, так как вы поддерживаете входы с плавающей запятой. Не имеет смысла использовать int только иногда только потому, что входные данные являются целыми числами.

1 голос
/ 14 марта 2012

На самом деле есть несколько способов сделать это.Например, вы можете использовать input.next() вместо input.nextDouble() и проанализировать возвращенную строку для проверки типа данных (ограничен ли он целочисленным максимумом и не содержит дробной части)

1 голос
/ 14 марта 2012

число1, число2 и число3 объявлены как двойные.Даже если они будут содержать целочисленное значение, они все равно будут двойными (т. Е. Значением 1,0).

Если вы хотите узнать это, двойное значение также может быть представлено как целочисленное значение, вы можете преобразовать двойное в строковое значение:

String doubleString = Double.valueOf(number1)

разбиение строки вокруг десятичной точки:

String[] split = doubleString.split("\\.");

и проверка десятичной части на наличие только нулей:

boolean canBeInt = split[1].matches("0*");

Если этоЗначение true, тогда вы можете запустить Integer.parseInt (split [0]) и получить целочисленное значение (или просто привести первоначальный double к int).

Обратите внимание, что это решение не будет проверять максимальное целочисленное значение.

...