2017-03-24 24 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爲整數

相關問題