2013-03-28 3 views
-4

나는 개체의 서식을 시도하는 동안 오류가 점점 계속 :형식 오류

java.util.IllegalFormatConversionException: d != java.lang.String 
    at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:3999) 
+3

여기에 의견을 쓸어 버렸습니다. 나는 우리가 지금부터 좋은 플레이를 할 수 있기를 바랍니다. –

+0

이전에 x가 Object로 파일에 들어 왔다고 말하면 확대 할 수 있습니까? 'itr3'는 어떻게 정의되어 있습니까? –

답변

3

String.format("%02d",x) 두 번째 인수가 int 될 것으로 예상 (또는 : 여기

Object x= itr3.next(); 
     x=String.format("%02d",x); 

를 오류입니다 Integer)가 아니라 Object입니다. 또한 Java는 x가 int, 그 다음에 String과 같이 동적으로 유형을 변경하는 스크립트 언어는 아닙니다. 당신이 숫자 내용으로 String을 가지고이 String을 변경하려면 같은

이 보이는에 왼쪽 패딩 0을 가지고 당신은 이런 식으로 작업을 수행 할 수 있습니다

String x = ... //get your content as String 
int theNumber = Integer.parseInt(x); //this will work if your x contains numeric value 
x = String.format("%02d", theNumber); 
+0

오류의 원인 인 경우 값은 Double 또는 Float가 될 수 있습니다. 이 도움이 될 수 있습니다. http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax –

+0

OP가 'x'의 내용을 지정하지 않았기 때문에 @JasonSperske, I '% f' 대신'% d'을 사용하여 포맷을 시도하기 때문에 정수 값이라고 가정합니다. –

+0

플로트 앞에 맨 앞에 0을 두는 것이 가장 좋은 가정이라고 나는 동의한다. OP가 여전히 이것을 읽고 있다고 가정 할 때, 소수점 이하 자릿수를 버리길 원한다면 float에 유효한 형식 문자열은 다음과 같을 수 있습니다 :' "% 02.0f"' –

-2

간단한 질문, 간단한 대답을 : .format을 ()는 Object 또는 String 유형에서만 작동하지 않습니다.

+0

Luiggi의 답변은 서면으로 오류를 반환하기 때문에 실제로는 가장 유효한 답변입니다. – Deprecated

+3

실제로는 (어떤 형식()이 허용하는지), [String.format()] (http : // docs doc/api/java/lang/String.html # format % 28java.lang.String, % 20java.lang.Object ... % 29) 객체를 가져오고, .format()'을 사용하는 것이 현명합니다. 이것을 시도해보십시오 :'Object x = 7; System.out.println (String.format ("% 02d", x));'이것은'07'을 출력 할 것이고, 이제 이것을 시도하십시오 :'Object x = "7"; System.out.println (String.format ("% 02d", x)); 그러면 예외가 throw됩니다. 그러나'Object x = "7"; System.out.println (String.format ("% s", x));'그렇다면 괜찮습니다 :) –

+0

'Formatter.class'에서 찾은 문제는 Integer를 포맷하라는 메시지가 표시되면 보입니다. 정수로 캐스팅 할 수있는 객체 (코드에서 x는 사용할 수 없음) –