【发布时间】:2017-08-17 20:58:30
【问题描述】:
import java.io.*;
public class LargestOfTwo{
public static void main(String args[]) throws Exception{
BufferedReader scan = new BufferedReader(new InputStreamReader(System.in));
double num1, num2 , large;
System.out.println("Enter two numbers, and I will show you which one's largest!\n");
System.out.println("Enter two numbers: ");
num1 = Double.parseDouble(scan.readLine());
num2 = Double.parseDouble(scan.readLine());
large = largest(num1,num2);
System.out.print("Largest of the numbers is "+large);
}
private static double largest(int x,double y){
System.out.println("id");
if (x>y)
return x;
else
return y;
}
private static double largest(double x,int y){
System.out.println("ii");
if (x>y)
return x;
else
return y;
}
private static double largest(double x,double y){
System.out.println("dd");
if (x>y)
return x;
else
return y;
}
}
我需要找到最大的 2 个输入数字,使用函数重载(输入浮点值和 int 值)。
我通过这些打印文本(id、ii、dd)检查了调用是否转到特定方法。
private static double largest(int x,double y){
System.out.println("id");
}
private static double largest(double x,int y){
System.out.println("ii");
}
private static double largest(double x,double y){
System.out.println("dd");
}
但它只执行 dd :-
private static double largest(double x,double y)
是不是因为变量初始化错误?我该如何解决这个问题?
【问题讨论】:
-
因为你初始化了引用 "double num1, num2;"作为 double 类型,您只需发送 2 个双引用位模式的副本,在这种情况下 jvm 认为 dd 是最合适的
-
有什么解决办法吗?
-
你为什么关心?假设我输入了 3 ,它非常适合整数和双精度范围,所以你可以选择最适合你的,如果你想处理小数位,我也会选择双精度,它也有更大的范围,如果我理解正确的话他们不要求您检测哪种原始类型
标签: java function int double overloading