我要求代码创建具有不同参数的重载方法,这些参数在给定3个整数或双精度时找到最大值。
我不确定如何告诉主程序在给定整数时调用整数值的方法,或者在给定双精度时调用double值的方法。
说,我得到了(3.0,2.0,2.0),我希望最大值为3.0。我不知道如何调用双打方法。
编辑:必须通过控制台输入数字。从这里我不知道如何让程序选择一种方法。
public class NMax {
public static int max(int a, int b, int c) {
int max = 0;
if (a>=b) {
if (a>=c) {
max=a;
} else {
max=c;
}
} else if (b>=a) {
if (b>=c) {
max=b;
} else {
max=c;
}
}
return max;
}
public static double max(double a, double b, double c) {
double max = 0;
if (a>=b) {
if (a>=c) {
max=a;
} else {
max=c;
}
} else if (b>=a) {
if (b>=c) {
max=b;
} else {
max=c;
}
}
return max;
}
public static void main(String[] args) {
double d = StdIn.readDouble();
double e = StdIn.readDouble();
double f = StdIn.readDouble();
int a = StdIn.readInt();
int b = StdIn.readInt();
int c = StdIn.readInt();
System.out.print(max(d, e, f));
}
}
答案 0 :(得分:1)
我假设,系统的所有三个输入都是整数或双精度。对于其他可能的组合,您可以对代码进行必要的更改。
containers
答案 1 :(得分:0)
当调用max(1.0,2.0,3.0)时,编译器将自动搜索方法
当调用max(1,2,3)时,编译器将自动调用以下方法
答案 2 :(得分:0)
对于你的情况,我会编写一个接受Comparable参数的方法,并将其重用于double,int(在幕后转换为Integer,由java转换为Double)或者需要比较的任何其他方法来查找最大值。
或者(甚至更好)使用来自apache commons-lang3的ObjectUtils.max()
没有理由为多个参数类型重复相同的代码(DRY原则)。