Develop/Spring 공략

[Calculator] Lv.1 트러블슈팅

쿼카홀릭 2025. 1. 10. 11:32

Lv.1 과제를 구현하면서 발생한 트러블과 솔루션을 작성해보려 한다.

 

1. 사칙연산 기호를 적합한 타입으로 선언한 변수에 저장합니다. (charAt(0)) 구현 이슈

더보기

<배경>

- 최초 작성 시, 연산기호를 String 타입으로 선언하여 사칙연산을 하게끔 구현하였다.

- 제시된 조건인 charAt();을 사용하여 String타입으로 저장된 연산기호를 하나씩 뽑아내야했다.

 

<문제점>

charAt()을 사용하려니, if문으로 구현했던 조건문이 연산기호를 인식하지 못하여 에러가 생겼다.

 

<해결 방법>

if로 구성한 전체 조건문을 switch 문으로 구조변경을 하였다.

charAt에 대해 스캐너를 연동해서 선언을 해주고 조건문으로 그 값을 받을 수 있도록 설정했다.

 

<새로 알게된 점>

1. char는 .equals 기능을 사용할 수 없어, if문 보다는 switch 문으로 작성하는 것이 적합하다.

2. charAt(0)의 사용 개념은 스캐너로 부터 문자열을 불러오나, 그 문자열 중 0번째 값을 뽑아온다는 의미이다.

 

2. 연산 오류가 발생할 경우 해당 오류에 대한 내용을 정제하여 출력합니다.

 ex) “나눗셈 연산에서 분모(두번째 정수)에 0이 입력될 수 없습니다.“ 구현 이슈

 

더보기

<배경>

- 최초 작성 시, 두번째 숫자 입력값을 받을 때, '0'을 받을 수 없게끔 구현하였다.

 

<문제점>

- 위와 같이 작동하면 나눗셈 뿐만 아니라 모든 연산에 대하여 적용됨으로 나눗셈 연산에서만 분모값으로 0을 받을 수 없게 하는 조건의 본질을 흐리게 되었다.

 

<해결 방법>

- 나눗셈 값을 입력 받는 case 구문에 if 조건문을 걸어, 두번째 입력 값으로 0을 받고 나눗셈을 받았을 때, "분모에는 0을 입력할 수 없습니다" 구문을 프린트 할 수 있도록 해결하였다.

 

<새로 알게된 점>

- 구현되어야 할 부분을 명확히 인지하고 해당 부분에 조건을 명확히 걸어주어야 한다.

 

3. 반복문을 사용하되, 반복의 종료를 알려주는 “exit” 문자열을 입력하기 전까지 무한으로 계산을 진행할 수 있도록 소스 코드를 수정하기 구현 이슈

 

더보기

<배경>

- do-while 반복문을 사용하여 첫번째 연산은 무조건 실행하되, while 조건에 부합하지 않으면 다시 되돌아 가는 반복문을 구현하려고 했다. -> while조건에 대해 명확히 명시할 수 없어 실패

 

<문제점>

- while 반복문을 전체 연산작업 파트에 걸고, break를 적용했으나 무한 루프에 빠졌다.

 

<해결 방법>

- while(true) 반복문 안에, 특정 문구를 입력하면 break로 인해 반복문을 빠져나올 수 있게끔 구현하였다.

- if 조건문을 사용하여, "exit" 문구를 입력 시, break 적용

 

<새로 알게된 점>

- String 타입으로 스캐너를 연동해서 종료 문구를 받을 때, .nextLine()이 에러가 나면 .next()로 수정해서 시도해 볼 것.(이렇게 변경했더니 에러 없이 잘 작동했음)

 

'Develop > Spring 공략' 카테고리의 다른 글

[Spring] 카카오맵 API 사용 초기 세팅  (0) 2025.04.22
[Spring] Spring JPA - Page 와 Slice  (0) 2025.04.01
[Kiosk] 트러블슈팅  (0) 2025.01.21
[Calculator] Lv.2 트러블슈팅  (0) 2025.01.10
2024.12.23(Mon.)  (0) 2024.12.23