본문 바로가기
Today I Learned 2024. 5. 13.

(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 주차가 시작이 되었기 때문에 관련 내용은 최대한 맥락을 가져가려고 노력하려고 함

내일부터 학습 관련 정리 + 개인 과제의 시작으로 이번주를 마무리 할듯!