개인기록

[오류] 33월의 저주

ran4 2022. 2. 28. 21:00

[개요]

 

33월 15일...

생각없이 예제 따라치다가 오류가 나고 말았다 

평소처럼 오타겠거니 싶었지만 생각보다 해결하는데 시간이 걸렸다

 

 

 

9월로 바꾸었더니 42월이 됐다

규칙을 알아보고자 입력을 다르게 해보았지만 

4-22

5-26(+4)

6-31(+5)

7-33(+2)

8-40(+7)

9-42(+2) 

 

원인파악에 도움이 되진 않았다 

첫번째 출력문의 오류라고 판단하여 그에 관련된 것만 고쳐보려 했다가 해결이 더 오래걸리고 말았다 

 

 

[해결]

 

 

date.get(Calendar.Month+1)

(date.get(Calendar.Month)+1) 

이 사소한 실수가 7월을 33월로 만들고 말았던것이다 

(그리고 사실 오늘 날짜인 2월 28일이 아닌 10월 28일로 출력되는것도 오류였다)

 

내가 코드를 생각없이 치고있다는 반증이라 생각하여 반성하게 되었다.

오타와 괄호를 주의해야겠다 

 

아쉬운점은 어떤 연산으로 33월이 나왔는지를 모른다는것이다 

 

date.get(Calendar.MONTH)+1의 경우에는

해당하는 입력값 뒤에 1이 붙어서 이런 출력이 나왔다고 생각할 수 있는데 (7에 1이 붙었다 추정)

 

date.get(Calendar.MONTH+1)은 어떤 계산으로 그렇게 된건지 모르겠다