🌏과제 - 문자열 덧셈 계산기
입력한 문자열에서 숫자를 추출하여 더하는 계산기를 구현한다.
- 쉼표(,) 또는 콜론(:)을 구분자로 가지는 문자열을 전달하는 경우 구분자를 기준으로 분리한 각 숫자의 합을 반환한다.
예: "" => 0, "1,2" => 3, "1,2,3" => 6, "1,2:3" => 6 - 앞의 기본 구분자(쉼표, 콜론) 외에 커스텀 구분자를 지정할 수 있다. 커스텀 구분자는 문자열 앞부분의 "//"와 "\n" 사이에 위치하는 문자를 커스텀 구분자로 사용한다.
예를 들어 "//;\n1;2;3"과 같이 값을 입력할 경우 커스텀 구분자는 세미콜론(;)이며, 결과 값은 6이 반환되어야 한다. - 사용자가 잘못된 값을 입력할 경우 IllegalArgumentException을 발생시킨 후 애플리케이션은 종료되어야 한다.
❗구현 기능 목록
- 구분자를 기준으로 숫자를 추출하는 기능
- 입력값이 없다면(공백) 0을 반환한다.
- 입력은 구분자와 양수로 이뤄진 문자열이다.
- 추출된 숫자는 모두 **양수**(ex : 2,3,4...)이다.
- 커스텀 구분자를 확인하고 저장해야 한다.
- 커스텀 구분자는 **무조건** 문자열 앞부분의 "//"와 "\n" 사이에 위치한다.
- 커스텀 구분자는 저장된 후 구분자로써 기능한다. - 추출된 숫자를 관리(저장 및 덧셈 연산 수행)하는 기능
- 사용자 입력 및 결과 출력 기능
구현 클래스
└── calculator
├── Application
└── calculator.controller
└── CalculatorController
└── calculator.model
└── Numbers
└── Separator
└── calculator.view
└── IOView
회고
기능과 예외 처리에 대한 내용을 적절히 분리하지 못했다.
위에서 보이다시피 기능 아래에 조건을 명시했다. 그러나 발생할 수 있는 예외 상황에 대해 적절히 분리하여 기술하지 못했다. 예외 처리를 명확히 해야 구현 단계에서 유발될 실수를 줄일 수 있다고 생각한다. 앞으로 일어날지도 모르는 상황에 대해 깊이 고민해야겠다고 다짐했다. 또한 문서를 깔끔하고 명확하게 작성할 수 있도록 노력해야겠다.
정규표현식을 사용할 수 있었다.
제출하고 다시 보니 구분자를 처리하는 기능에서 정규표현식을 사용했다면 코드가 더 깔끔해졌을 것이라고 생각한다. 이 부분을 학습하고 적용했다면 구분자에 대한 예외 기준을 더 명확히 하여 오류를 확실히 잡을 수 있었을 것이다. 더 나은 방법이 있지 않았는지 마지막까지 고민해보는 시간을 가져야겠다.
728x90
반응형
'Projects > Remembrance' 카테고리의 다른 글
[회고] 우테코 프리코스 3주차 - 로또 (2) | 2024.11.12 |
---|---|
[회고] 우테코 프리코스 2주차 - 자동차 경주 (1) | 2024.11.04 |
GDSC Solution Challenge 일지 - 3 (0) | 2024.03.01 |
GDSC Solution Challenge 일지 - 2 (1) | 2024.01.25 |
GDSC Solution Challenge 일지 -1 (1) | 2024.01.07 |