문자열 포맷팅

DLAEY·2022년 10월 5일
0

1. 에러명 : Exception in thread "main" java.util.IllegalFormatConversionException: d != java.lang.String

발생한 문제 : 코드업 1018

코드업1018

  1. 원인 : printf의 지시자를 타입에 맞지 않게 넣었기 때문에 발생함. 나는 입력을 String[]으로 받았는데, 지시자를 %d(정수형)으로 설정해 두었기에 나타나는 에러였음.

  2. 해결 방법 : %d를 %s로 바꾸어 해결.

  3. 참고 : printf() 지시자

출처 : 벨로그


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

발생한 문제 : 코드업 1019

코드업1019

  1. 위 문제와 비슷하게 문자열 지시자 때문에 발생하는 것으로 보임..
    이쯤되니 문자열에 대해 좀 알고 넘어가야 할 것 같은 생각이 들었습니다.


문자열 포맷터

  1. 에러명에 공통적으로 "java.util. ..."이라는 말이 있습니다. 뭔가의 클래스명 같아 보이는데요.

format클래스가 있나 알아보기 위해 공식 문서에 들어가보기로 합니다.

포맷터

이 문서를 통해 Formatter는 모든 클래스의 조상격에 해당하는 java.lang.Object 하위 클래스임을 알 수 있습니다. 각종 채널과 i/o스트림 관련 인터페이스(Closeable, Flushable)에 포함되어 있다고 나오네요.

좀 더 살펴보면, java의 formatter 클래스는 C 언어의 printf에 영감을 받아 만들어졌다고 합니다. 특정한 출력 형태로 문자열을 다듬는 인터프리터이며, 크게 다음과 같은 종류의 형변환을 지원합니다.

  • 일반(General) - may be applied to any argument type
  • 문자(Character) - char, Character, byte, Byte, short, and Short.
  • 정수(Integral) - byte, Byte, short, Short, int and Integer, long, Long, BigInteger
  • 부동 소수점(Floating Point) - float, Float, double, Double, and BigDecimal
  • 날짜, 시간(Date/Time) - long, Long, Calendar, and Date.
  • 퍼센트(Percent) - produces a literal '%' ('\u0025')
  • Line Separator - platform-specific line separator

이제 일반적인 지시자는 위의 사진을 다시 참고해 볼 수 있을 것 같습니다.
출처 : 벨로그

참고

0개의 댓글