intro
- 프로젝트를 진행하며 발생한 문제 상황과 해결 과정들을 상세히 기록하고 추후에 같은 문제가 발생 했을때 빠르게 문제 해결하기 위해 트러블 슈팅을 정리할려고 한다.
- 기록하는 습관을 기르기 위해 프로젝트 기간동안 꾸준히 작성할 것 이다.
계산기 프로그램을 하는 과정에서 입력을 받는 main 클래스와 연산을 하는 클래스를 분리하였다.
연산 결과를 저장하는 리스트와 기능을 연산 클래스(OperatorType)에 추가하였는데 main 클래스에서 저장되는 결과값이 계속 초기화 되는 현상이 발생했다.
⚠️ 1.문제 상황 발생
첫번째 결과값을 조회한 후 두번째 결과값을 저장시켜 다시 조회하면 하나의 결과값만 출력되게 된다.
🔎 2.원인 추론
리스트가 계속 초기화 된다는 것은 반복문에서 문제가 있다고 생각했다.
- matchOperatorType(operator) : 입력한 연산자와 enum에 있는 연산자가 동일한지 체크하는 메서드
- setResult(result):enum에 있는 operate로 연산을 진행한후 arrayList에 추가하는 메서드
위의 코드는 while 문안에 있는 코드이다.
처음 코드를 작성할 때 matchOperatorType은 결과값을 리스트에 넣는거와는 관련이 없다고 생각해서 OperatorType 의 enum 클래스를 반복문안에 작성하였다.
그런데 생각해보면 enum클래스가 반복문 안에서 호출된다면 operatorType 에서 가져오는 모든 메소드들이 초기화 된다는 말과 같다.
📝 3.해결방안
OperatorType 을 while 문 밖에 호출했다.
📌4.결과 확인
지금까지 저장한 값들이 모두 출력되었다.
✒️회고
- 아주 기본적이고 실수에 가까운 오류이지만 프로젝트 진행 시에 위 오류 내용처럼 클래스를 가져오는 일들이 많을 것이다. 이런 오류를 첫 코드 작성시에 발생 시킨다면 수많은 코드를 짰을 때 찾아내고 수정하는 게 불필요한 시간을 소요 시킬거 같다. 처음에 작성할 때 전체적인 클래스를 구성하고 틀부터 완벽하게 만드는 것이 중요하다고 생각했다.
'프로젝트 > 트러블슈팅' 카테고리의 다른 글
[Spring]Filter 예외처리 (0) | 2025.04.03 |
---|---|
[JAVA]Enum 에 선언된 메소드 호출오류 (0) | 2025.03.13 |
[JAVA]입력 버퍼비우기 - (Next() , NextLine()) (0) | 2025.03.05 |