2017-03-24 27 views
1
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个输入数字中的最大值。函数只调用具有不同输入的相同块

我检查了打电话是否通过打印文本(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)

是因为错误的变量初始化或没有?我该如何解决这个问题?

+1

因为你初始化参考“双NUM1, NUM2;”作为double类型,您只需发送2个双引用位模式的副本,在这种情况下,jvm认为dd是最合适的 – HRgiger

+0

对此的任何修复? – JoeTinnySpace

+0

你为什么在意?假设我输入了3,它完全符合整数以及双倍范围,所以你可以选择哪一个最适合你,如果你想要处理小数位,我也会用double来进行更大的范围,如果我明白的话他们不要求你检测哪个原始类型 – HRgiger

回答

2

num1num2都被声明为double,所以除了得到的结果之外确实没有其他结果。

+0

那么我该如何解决这个问题? 我需要为这个问题的答案“使用函数重载(输入float值和int值)找到2个输入数字中的最大值。” – JoeTinnySpace

+0

说明不清楚。他们希望你做什么?看起来重载是不必要的。 – Idos

+0

使用函数重载概念(输入浮点值和整型值),找出两个输入数字中最大的一个: - 这是我的大学针对作业所做的确切问题。 :V – JoeTinnySpace

2

在这一行中,num1和num2是双精度。所以具有双参数的方法就是调用。

num1 = Double.parseDouble(scan.readLine()); 
num2 = Double.parseDouble(scan.readLine()); 
1

,如果你要拨打的largest(int x,double y)方法,然后抹上num1为整数,即largest((int)num1, num2).如果你想打电话largest(int x,int y)再投两种num1num2为整数

相关问题