2017-03-24 1 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 값)를 사용하여 입력 된 두 개의 숫자 중 가장 큰 숫자를 찾아야합니다.함수는 다른 입력으로 동일한 블록을 호출합니다.

호출이 특정 방법으로 인쇄 텍스트 (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; " 더블 타입으로 당신은 단지 2 개의 더블 레퍼런스 비트 패턴의 복사본을이 경우에 보냅니다. jvm은 dd가 가장 적합하다고 생각합니다. – HRgiger

+0

이 문제를 해결할 수 있습니까? – JoeTinnySpace

+0

왜 신경 쓰시겠습니까? 내가 완벽하게 정수뿐만 아니라 이중 범위를 맞는 3을 입력하자, 그래서 당신이 내가 오른쪽으로 이해한다면 더 큰 범위를 가지고 또한 두 배로 갈 것이라고 소수점을 처리하고 싶다면, 당신에게 가장 적합한 선택할 수 있도록 말 그들은 어떤 기본 유형 – HRgiger

답변

2

num1num2은 모두 double으로 선언되어 있으므로 실제로 얻은 것 이외의 다른 결과는 없습니다.

+0

그래서 어떻게 해결할 수 있습니까? "함수 오버로딩 (입력 실수 값과 int 값)을 사용하여 2 개의 입력 된 숫자 중 가장 큰 것을 찾으십시오." – JoeTinnySpace

+0

지침이 명확하지 않습니다. 그들은 정확히 당신이 무엇을 기대합니까? 그것은 과부하가 불필요한 것 같습니다. – Idos

+0

함수 오버로딩 개념 (입력 실수 값과 int 값)을 사용하여 두 개의 입력 된 숫자 중에서 가장 큰 것을 찾습니다. - 이것은 우리 대학교가 과제를 위해 내린 정확한 질문입니다. : V – JoeTinnySpace

2

이 줄에서 num1과 num2는 double입니다. 따라서 이중 매개 변수를 갖는 메소드가 호출됩니다. 당신이 largest(int x,double y) 메소드를 호출 할 경우

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

는, 당신은 largest(int x,int y)를 호출 할 경우, 즉 largest((int)num1, num2). 다음 정수로 모두 num1num2 캐스팅, 정수로 num1 캐스팅

관련 문제