JaeWon's Devlog
article thumbnail
반응형

String 으로 된 문자열을 정수형태로 변경을 하려고 할때, 종종 NumberFormatException이 발생한다.

해당 글에서는 NumberFormatException이 발생하는 원인과 해결 방법을 알아보려고 한다.


1. 원인

- NumberFormatException은 영어 그대로 해석하게 되면 숫자형 포맷 오류입니다.

- 문자형을 숫자형으로 변경 시 발생하는 에러입니다.(Integer.parseInt() ...)

case 1. 숫자형으로 변경 시 문자가 포함되어 있는 경우.

// 문자형 변수 strToNum 에 문자 12345O을 입력 12345 + O(알파벳 대문자 O)
String strToNum = "12345O";

// 정수가 아닌 문자(알파벳 O)가 포함되어 에러발생
System.out.println(Integer.parseInt(strToNum));

- 해결 방법

  • 변경하고자 하는 문자형에서 문자를 제거 후 변경한다.

case 2. 변경하고자 하는 자료형의 범위크기 보다 큰 경우.

String strToNum = "123321123321123321123321";

// int 범위(2,147,483,647)보다 큰 정수(123,321,123,321,123,321,123,321)이므로 에러발생
System.out.println(Integer.parseInt(strToNum));

- 해결 방법

  • 변경하고자하는 자료형의 범위를 파악하고, 해당 범위안에 가능한 자료형으로 변경한다.
  • 위 예제에서는 Double.parseDouble()를 사용한다.

case 3. null 인 경우.

String strToNum = null;

// null을 변환시키려고 하였기 때문에, 에러 발생(NullPointerException 아님)
System.out.println(Integer.parseInt(strToNum));

- 해결 방법

  • 변경하고자 하는 문자의 null 체크를 진행한다.

case 4. 변경하고자 하는 문자형의 공백이 포함되어 있을 경우.

String strToNum = "12345 ";

// 공백이 포함되어 있기 때문에 에러 발생
System.out.println(Integer.parseInt(strToNum));

- 해결 방법

  • 변경하고자 하는 문자의 공백을 지우고 변경한다.(trim() 사용)

참고

- https://lnsideout.tistory.com/entry/JAVA-자바-NumberFormatException-원인예외처리해결

반응형
profile

JaeWon's Devlog

@Wonol

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!