Today I Learned
(24.05.13)[5주차] 런타임 이슈 by NumberFormatException 예외
5주차 Spring 강의가 진행이 되고 있는데, 관련 내용은 오늘 배운것 + 내일 마무리한 것과 정리해서
내일 한번에 정리를 할 수 있도록 할 것
처음 배우는 것이기 때문에 한번에 내일 정리할 수 있도록 할 것.
CODE KATA 정리
런타임 이슈
더보기
public class Main {
public static void main(String[] args) {
String t = "3141592";
String p = "271";
int answer = 0;
int pLenth = p.length();
char[] charArray = t.toCharArray();
for (int i = 0; i <= charArray.length - pLenth; i++) {
String unit = t.substring(i, i + pLenth);
System.out.println(unit);
if (Integer.parseInt(unit) <= Integer.parseInt(p)) {
answer++;
}
}
System.out.println(answer);
}
}
이슈
- 관련 알고리즘을 intellij 로 돌려서 정상적으로 작동했음에도 특정 테스트 변수에 대해서 런타임 에러가 발생
원인
- String 타입으로 입력되는 t와 p에 관해서 Integer.parseInt 로 변환을 할 때 그 범위가 Long이 될 가능성을 배제
- NumberFormatException 예외가 발생해서 Runtime Error가 프로그램 내에서 최종적으로 발생하게 되는것
해결
- String에서 정수 변환을 할 때, 당연히 Integer 로 생각을 했는데 그 습관을 버려야할 것.
- Long.parseLong으로 데이터 값을 크게 잡아주는 것도 필요함
저번주에도 했던 실수 이기 때문에 또 유의를 하기 위해서 다시 복습 차원에서 기록
Spring 주차가 시작이 되었기 때문에 관련 내용은 최대한 맥락을 가져가려고 노력하려고 함
내일부터 학습 관련 정리 + 개인 과제의 시작으로 이번주를 마무리 할듯!
'Today I Learned' 카테고리의 다른 글
(24.05.16)[5주차] Spring 입문 강의 02 (0) | 2024.05.16 |
---|---|
(24.05.14)[5주차] Spring 입문 강의 01 (0) | 2024.05.14 |
(24.05.10)[5주차] n진수로 바꾸기 & StringBuffer (0) | 2024.05.10 |
(24.05.09)[4주차] 유클리드 호세법 최대공약수, 최소공배수 (0) | 2024.05.09 |
(24.05.08)[4주차] java.util.regex 패키지 정규식 확용 (0) | 2024.05.08 |