Перегрузка в Java для пользовательского ввода?

Мое приложение должно печатать меньшее значение как int или double, но я не знаю, как настроить мой код, чтобы мое приложение печатало меньшее число как double или int, в зависимости от типа значения, вводимого пользователем.

Бывший. пользователь вводит 2,5 и 3,5, печатает меньшее число вдвое пользователь вводит 2 и 3, печатает меньшее число в int

import java.util.Scanner;

public class SmallerNumber{
public static int smallerNumber(int valOne, int valTwo){
    if (valOne < valTwo){
        return (valOne);
    }
    else{
        return (valTwo);  
    }
}
public static double smallerNumber(double valOne, double valTwo){
    if (valOne < valTwo){
        return (valOne);
    }
    else{
        return (valTwo);  
    }
}
public static void main(String[]args){
   Scanner in = new Scanner(System.in);

   System.out.print("Enter first value: ");
   int valOne = in.nextInt();
   System.out.print("Enter second value: ");
   int valTwo = in.nextInt();


   int smallerNum = smallerNumber(valOne, valTwo);
   System.out.println(smallerNum);
   double smallerNum2 = smallerNumber(valOne, valTwo);
   System.out.println(smallerNum2);
}

}

Это немного сбивает с толку. Вы читаете только ints, но вы также хотите читать в double? Часть вашей проблемы связана с с этим вопросом, но другая часть заключается в том, что вы не закончили писать этот код ...

Makoto 13.12.2018 20:47
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
1
247
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Когда вы пишете nextInt(), вы читаете ввод как целое число, отсюда и название. Тип возвращаемого значения этого метода определяется как int, и вы сохраняете эти значения в переменных int. Когда вы вызываете smallerNumber(valOne, valTwo);, он будет использовать перегруженный метод с аргументами int.

Если вы хотите использовать метод smallerNumber(...); с аргументами типа double, вам необходимо указать значения типа double. Это означает, что вам нужно использовать вызовы nextDouble() для получения значений double из ввода. После этого будет использоваться правильная перегрузка smallerNumber(...);.

Чтобы определить, ввел ли пользователь «целое» или «двойное» значение без фактического чтения значения, вы должны использовать методы hasNextInt() или hasNextDouble(). Другой способ - использовать всегдаnextDouble() и попытаться преобразовать его в целочисленное значение. В случае успеха вы можете использовать целочисленные значения для вызова метода smallerNumber(int, int);, в противном случае вызовите метод smallerNumber(double, double);.

Ответ принят как подходящий

Я сделаю что-то подобное. Прочтите ввод как double, а затем по модулю 1, чтобы узнать, является ли его float или int

public static void main(String[]args)
{
 Scanner in = new Scanner(System.in);

 System.out.print("Enter first value: ");
 double valOne = in.nextDouble();
 System.out.print("Enter second value: ");
 double valTwo = in.nextDouble();
 if ((valOne % 1) == 0 && (valTwo % 1) == 0)
 // call the intmethod version
 else 
 // call the float/double method

}

ty за вашу помощь!

Jacob Matias 14.12.2018 02:05

не беспокойся. Я также предлагаю посмотреть на рефакторинг, поскольку оба ваших метода делают одно и то же.

Gauravsa 14.12.2018 02:07

Другие вопросы по теме