본문 바로가기
TIL

Format 함수에서 %02s 시 FormatFlagsConversionMismatchException 발생하는 이유

by 도쿠니 2022. 4. 8.

https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html

 

Formatter (Java Platform SE 7 )

'e' '\u0065' Requires the output to be formatted using computerized scientific notation. The localization algorithm is applied. The formatting of the magnitude m depends upon its value. If m is NaN or infinite, the literal strings "NaN" or "Infinity", resp

docs.oracle.com

보통 Format함수 쓸 때는 

 %[flags][width]conversion

이런 형식으로다가 쓴다

예를 들면 

%02d

이런식으로 쓴다는 건데

flags는 포맷할 때 특정한 역할을 수행해주는 녀석들이고 (종류는 위의 공식문서에서 확인해보자)

width는 포맷팅을 몇글자로 할건지 정하는 녀석이다.

conversion은 포매팅할 값의 타입으로 생각하면된다. 

 

일단 서론은 여기까지 마치도록 하고 이 flags에는 지원하는 타입이 따로 존재한다.

 

이 게시글의 타이틀 처럼 만약 %02s 이런식으로 쓰면 에러가 발생하는데 

Exception in thread "main" java.util.FormatFlagsConversionMismatchException: Conversion = s, Flags = 0

이렇게 나올 것이다.

저 에러의 의미는 Flag와 Conversion이 서로 미스매치 한다는 의미이고 그렇다면 Flag 0은 Conversion s를 지원 안한다는 소리!

 

위의 자바 공식 문서에서 Flags 파트를 보면 General이나 Character, Date/Time은 zero-padded가 지원안된다고 되어있다.

 

즉 그 말은 숫자타입들의 Conversion만 0으로 채우는게 가능하다는 소리!

 

앞으로 포맷팅할 때 0채우고 싶으면 s 말고 d써서 붙이자.

 

그리고 항상 뭐가 안되면 공식문서도 한번 확인해보는 습관을 가지자..... 공식문서 최고

'TIL' 카테고리의 다른 글

재귀함수 공부...(feat. Counting Cells in a Blob)  (0) 2022.04.12
재귀함수 공부하기.. (feat. 미로찾기)  (0) 2022.04.12
프로그래머스 : 베스트 앨범  (0) 2022.04.07
백준 1874번 : 스택 수열  (0) 2022.04.07
백준 3190 : 뱀  (0) 2022.04.07

댓글