반응형
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-원인예외처리해결
반응형
'Error' 카테고리의 다른 글
[Vue.js] Axios 통한 RestFul API 통신시 415 에러 해결법 (0) | 2022.06.25 |
---|---|
[Tomcat] 65535 bytes limit(대용량 jsp 파일) 에러 해결법 (0) | 2022.01.09 |
[Java] java.lang.UnsupportedOperationException 에러 해결법 (0) | 2021.08.28 |
[Java] java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT 에러 해결법 (2) | 2021.08.28 |
[Intelli J] Sync작업 시 Unable to find method 에러 해결 (2) | 2021.06.20 |