2012-04-20 6 views
3

double [] 배열을 인수로 사용하여 System.out.format 정보를 출력하려고합니다. 이 작동하지 않습니다Java System.out.format double array

out.format("New dimensions:\n" + 
     "Length: %f\n" + 
     "Width: %f\n\n", 
     doubleArray); 

이 그러나 수행합니다

out.format("New dimensions:\n" + 
     "Length: %f\n" + 
     "Width: %f\n\n", 
     doubleArray[0], doubleArray[1]); 

하지 않는 이유는 첫 번째 형식을 사용할 수 있습니까? 그것은 아마 잘 문자열과 함께 작동합니다.

답변

4

자바는 doubleDouble A를 오토 박싱 할 것이다, 그러나 당신의 double[]Double[]에 오토 박싱하지 않을 것이다, 그래서 Object[] 일치하지 않습니다. 결과적으로, 배열은 배열 자체로 취급되고 있습니다. 분명히 이중으로 형식을 지정할 수 없습니다.

배열을 double[] 대신 Double[]으로 지정하면 format에 대한 호출이 작동합니다.

+1

도움 주셔서 감사합니다! 나는 타입을'Double []'로 바꿨고 지금은 작동하는 것 같다. – joelises

1

배열이 double이 아니기 때문에 작동하지 않습니다 (Java에서는 배열이 클래스이므로 일반적인 포인터와 같습니다). 출력 할 내용은 정확히이고, 수행 한 결과는 %fformat specifier입니다. ArraySomething []이 (가) 일치하지 않습니다.

Java 배열의 경우 Java's Formatting 및 여기에서 How does array class work in Java?을 참조하십시오.

+2

[링크] (http://docs.oracle.com/javase/tutorial/java/data/numberformat.html) "두 개의 java.io.PrintStream 메소드에 대한 구문은 동일합니다. public PrintStream format (String format, Object ... args) "세 점 연산자는 선택적으로 인수 배열을 가져 오지 만 여기에서는 작동하지 않습니다. 변환 오류가 발생합니다. – joelises