2017-03-24 4 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; 
    } 
} 

関数のオーバーロード(入力浮動小数点値とint値)を使用して、入力された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をnum1num2の両方をキャスト、 num2;ダブルタイプの場合は、この場合2ダブルリファレンスビットパターンのコピーを送信してください。jvmはddがこれに最も適していると思いますか? – HRgiger

+0

これは何ですか? – JoeTinnySpace

+0

なぜ気になる?私は完全に整数だけでなく、二重範囲に適合する3を入力することができますので、あなたに最適なものを選択することができますので、小数点以下の桁も処理したい場合は、彼らはどのプリミティブタイプ – HRgiger

答えて

2

num1num2doubleと宣言されていますので、実際に他の結果が得られることは他にありません。

+0

それをどうすれば修正できますか? "関数のオーバーロード(入力浮動小数点値とint値)を使用して、2つの入力数値のうち最大のものを見つけます。" – JoeTinnySpace

+0

手順が不明です。彼らはあなたに何を期待していますか?オーバーロードが不要なようです。 – Idos

+0

関数のオーバーロードの概念(入力された浮動小数点数とint値)を使用して、2つの入力された数値の中で最大のものを見つけます: - これは私の大学が割り当てに対して行った正確な質問です。 :V – JoeTinnySpace

2

この行では、num1とnum2はdoubleです。だから、二重のパラメータを持つメソッドは呼び出しています。あなたがlargest(int x,int y)を呼び出したい場合は、参照を初期化するので、その後

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

あなたがlargest(int x,double y)メソッドをコールする場合は、整数としてすなわちlargest((int)num1, num2).num1をキャストし、「整数

関連する問題