2024. 9. 5. 12:06ㆍ내일배움캠프
아침에 일어나니 어제 미처 파악하지 못한 부분이 떠올랐다. 요구사항을 다시 한 번 확인하니 사용자가 "exit" 를 입력하면 프로그램이 종료되는 것 까지는 맞게 구현을 했는데 문제는 내가 임의적으로 첫 입력 값이 "exit" 일 때 계산기를 종료 할 수 있게 로직을 작성했다는 것이다. 심지어 요구사항에는 어느 시점이든 사용자가 "exit" 를 입력하면 계산기가 종료될 수 있도록 작성할 것을 요구하는 걸로 보인다(직접적인 내용은 없지만 요구사항의 흐름상 해당 내용이 맞다고 판단했다). 수정한 코드는 여기서 확인 가능하다.
1. 수정 전
현재 로직은 사용자의 "exit" 입력을 첫 번째 입력에서만 파악할 수 있다. 그래서 두 번째, 세 번째에서 사용자가 "exit" 를 입력해도 계산기가 종료되는 것이 아니라 '숫자' 또는 '연산자' 를 오입력 했다는 에러 메시지가 출력될 뿐이다.
현재의 코드인데, 이것을 입력을 받을 때마다 "exit" 를 입력했는지 확인해 사용자가 "exit" 를 입력하면 즉시 계산기를 종료할 수 있도록 바꾸고자 한다. 그러기 위해서는 현재 입력 값들을 받아 변수에 저장하는 로직을 변경할 필요가 있어 보인다.
2. 수정 후
목표 설정 후 값을 입력받는 로직에 대한 부분을 수정하기로 하였다. 수정한 로직의 일부는 아래와 같다.
값을 입력 받을 때마다 'checkExit(String)' 메서드를 호출하여 입력받은 값이 "exit" 인지 확인하도록 한 것 인데, 해당 방식 이외에 반복문을 사용하는 걸 고려해 보았지만 아래의 이유로 현재의 방식을 고수하게 되었다.
- 선-입력 값 저장, 후-메서드 호출 : 'Scanner.nextLine()' 을 사용하기에 입력한 값을 변수에 저장해야 하므로 'Collection' 중 하나의 타입을 갖는 객체를 생성해 저장하게 될 것이다. 그러면 그 값을 다시 꺼내 'checkExit(String)' 을 호출하는 번거로움이 존재
- 선-메서드 호출, 후-입력 값 저장 : 먼저 'checkExit(String)' 메서드를 호출하면 입력받은 값을 잃어버리게 됨
애초에 요구사항은 피연산자 2개, 연산자 1개를 입력 받는 것이고 추후에 확장을 통해 여러 연산을 한 번에 입력하는 경우에는 하나의 문자열로 입력을 받아 연산을 분리하는 메서드를 추가로 작성해야 할 듯해서 현재의 방식으로 수정을 하게 되었다.
이렇게 수정된 코드를 실행해 결과를 확인해보니 위의 실행 결과 이미지 처럼 한 번의 연산(세 번의 입력)에서 어느 시점에서라도 "exit" 를 입력하게 되면 계산기가 종료되는 것을 확인할 수 있다. 물론 기존의 연산에 대한 수행과 오입력에 대한 수행에 대한 부분도 다시 한 번 확인하였다.
3. 마무리
추가적으로 시스템 메시지 출력시 메시지가 2줄 이상일 때 'System.out.println()' 구문을 2번 사용하는게 거슬려 문자열에 "\n" 을 사용하는 방식으로 해당 구문을 하나로 줄였다. 그러니...이제 정말 인터페이스 쓰러 가보자!
'내일배움캠프' 카테고리의 다른 글
[내일배움캠프] TIL - 24.09.05(목) (0) | 2024.09.05 |
---|---|
[내일배움캠프] 계산기 구현 - level.02(1) (0) | 2024.09.05 |
[내일배움캠프] TIL - 24.09.04(수) (0) | 2024.09.04 |
[내일배움캠프] 계산기 구현 - level.01(1) (0) | 2024.09.04 |
[내일배움캠프] TIL - 24.09.03(화) (0) | 2024.09.03 |