2013-08-08 2 views
-6

아래에서이 Java 코드를 실행 중이며 최대 34.5를 제공해야합니다. 대신 2.0입니다. 기묘한! 아무도이 코드의 잘못된 점을 말해 줄 수 있습니까? 감사.Java에서 2.0에 대해 최대 값을 반환하는 이유는 무엇입니까?

public class VarargsDemo { 

public static void main(String args[]){ 
     printMax(34.5, 3, 5, 6, 2); 
     printMax(new double[]{1,2,3}); 
} 

public static void printMax(double...numbers){ 
    if (numbers.length==0){ 
     System.out.println("No argument passed"); 
     return; 
    } 

    double result=numbers[0]; 
    for (int i=1; i<numbers.length;i++) 
     result=numbers[i]; 
    System.out.println("the max value is "+result); 
} 

}

는 출력 :

the max value is 2.0 
the max value is 3.0 
+8

비교 결과를 다음 double number로 덮어 쓰는 것조차하지 않고 있습니다. –

+0

Agh 문제는 누군가가 그를 위해 답을 쓰려고한다는 것이고, 그는 아무 것도 배우지 않을 것입니다. – Grammin

+0

어쩌면 배열을 먼저 정렬하겠습니까? –

답변

5
for (int i=1; i<numbers.length;i++) 
    result=numbers[i]; 

result 배열이 아니라 큰 하나의 마지막 요소 수는 ...

당신은 아마

를 원했다
for (int i=1; i<numbers.length;i++) 
    result = Math.max(numbers[i], result); 
+0

@touchdown, Math.max (double, double)를 사용하거나 비교를 쓸 수 있습니다. 나는 당신이 학습 경험을 위해 당신 자신의 것을 쓸 것을 권한다. –

1

varargs 배열의 두 번째 요소부터 마지막까지 반복하여 인쇄합니다.

자신에게 문제를 예비하고, 같은 것을 사용

double lower = 1.0d; 
double higher = 2.0d; 
System.out.println(Math.max(lower, higher)); 

을 ... 물론 당신의 varargs 방법에 적응 - 내가 당신을 떠날 것이다.

관련 문제