본문으로 바로가기

   

 

이번 글에서는 java.util.IllegalFormatConversionException 에러 해결 방법에 대하여 알아보도록 하겠습니다.

 

코드를 짜다가 다음과 같은 에러가 발생하였습니다.

 

예제를 통하여 에러가 발생한 이유와 해결 방법에 대하여 알아보도록 하겠습니다.

먼저 에러가 발생한 코드를 확인해 보도록 하겠습니다.

package test;

import java.util.HashMap;
import java.util.Iterator;

public class Main {
    
    public static void main(String[] args) {
    	try {
    		
    		HashMap<Integer, String> map = new HashMap<Integer, String>();

    		// put() 메소드를 이용한 요소의 저장
    		map.put(10, "십");
    		map.put(20, "이십");
    		map.put(30, "삼십");
    		map.put(40, "사십");
    		
            //iterator()메소드와 get()메소드를 이용한 요소의 출력
            Iterator keys = map.keySet().iterator();
            Integer key = (Integer) keys.next();
            System.out.println(String.format("키 : %d      값 : %d", key, map.get(key)));
            
    	}catch(Exception e) {
    		throw e;
    	}
    }
}

 

위의 소스를 실행시키니 java.util.IllegalFormatConversionException: d != java.lang.String 에러가 발생하였습니다.

 

Exception 뒤의 d != java.lang.String 이 부분에서 d는 String이 아니라고 나오네요.

즉, d != String 이므로 타입에 맞지않게 입력해서 난 예외입니다.

 

String이라면 '%s' 로 코드를 작성했어야 했는데, 제가 '%d' 정수형으로 선언을 했네요. 

%d가 아니라 %s로 해야 올바르게 작동할 것입니다.

 


출력문 부분을 '%s'로 바꾸고 다시 실행해 보도록 하겠습니다.

System.out.println(String.format("키 : %d      값 : %s", key, tm.get(key)));

 

출력 결과

 

정상적으로 출력이 되는 것을 확인할 수 있습니다.