2016-09-20 5 views
-1

최대 입력을 출력으로 가져 오는 함수가있는 클래스를 작성했지만 결과가 잘못되었습니다.최대 계산시 잘못된 결과

public class Test { 
    public int max(int a, int b) { 
     if(a > b) 
      return a; 
     else { 
      swap(a, b); 
      return a; 
     } 
    } 

    private void swap(int a, int b) { 
     // TODO Auto-generated method stub 
     int tmp = a; 
     a = b; 
     b = tmp; 
    } 

    public static void main(String[] args) { 
     Test t = new Test(); 
     int max = t.max(3, 6); 
     System.out.println(max); 
    } 
} 

내 결과가 3보다는 6

+0

자바 스크립트는 자바하지 않는 프로그램을입니다 얻으려면. – Li357

+3

참고 : http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-byvalue?rq=1 왜 스왑 방식이 필요합니까? – Li357

+0

나는 a를 원한다 최대 가치 – Jingwei

답변

0

@Jingwei 왜 요 스왑 기능을해야합니까이 경우에 : 다음은 내 코드가 왜 모르겠어요?

는 다음과 같은 두 정수의 최대가

public class Test { 
    public int max(int a,int b) 
    { 
     if(a > b) 
      return a; 
     else 
      return b; 
    } 

    public static void main(String [] args) 
    { 
     Test t = new Test(); 
     int max = t.max(3, 6); 
     System.out.println(max); 
    } 
} 
+0

나는 최대 값을 보유하고 싶습니다. 사실, 내 질문은 왜 swap()이 작동하지 않는 것입니까? – Jingwei

+0

Swap()은 변수를 교환하지 않지만 변수 사본이 전달되면 포인터를 전달하지 않습니다. 왜냐하면 전체 클래스에 정적 변수를 사용하지 않기 때문입니다. 'a'를 클래스의 변수로 선언하면 스왑이 작동합니다. 나는 표본을 쓸 수있다. – talisman027

+0

당신은 무엇을 의미합니까? 스왑()은 변수를 교환하지 않지만 변수 사본이 전달되면 포인터를 전달하지 않습니다. – Jingwei