Мое приложение должно печатать меньшее значение как 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);
}
}




Когда вы пишете 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 за вашу помощь!
не беспокойся. Я также предлагаю посмотреть на рефакторинг, поскольку оба ваших метода делают одно и то же.
Это немного сбивает с толку. Вы читаете только ints, но вы также хотите читать в double? Часть вашей проблемы связана с с этим вопросом, но другая часть заключается в том, что вы не закончили писать этот код ...