로또 구입 금액과 당첨 번호, 보너스 번호를 입력 받고, 발생한 로또 수량 및 번호, 당첨 내역, 수익률을 출력하는 간단한 로또 발매기를 구현해본다.
- 로또 구입 금액을 1000원 단위로 입력 받는다.
- 999원 이하나, 나누어 떨어지지 않는 경우, 예외 처리를 한다.
- 이렇게 잘못된 형식으로 입력시 에러 메시지를 출력하고, 입력을 다시 받도록 한다.
Ramdoms.pickUniqueNumbersInRange(1, 45, 6);
을 사용하여, 1~45번의 6개 번호를 뽑는다.- 오름차순으로 정렬하여 보여준다.
- 당첨 번호를 쉼표(,) 기준으로 6개 입력 받는다.
- 쉼표 기준으로 숫자를 골라낸다.
- 입력받는 숫자는 1~45 사이여야 하며, 다른 숫자가 들어올 시 에러 메시지 출력 후 입력을 다시 받도록 한다.
- 동일한 숫자를 2번 이상 입력하는 경우에도 에러 메시지 출력 후 입력을 다시 받도록 한다.
- 1~45 사이인 숫자 1개인 보너스 번호를 입력 받는다.
- 1~45 사이에 있는 숫자여야하며,
3. 당첨 번호 입력 받기
에서 받았던 번호와 동일하다면 에러 메시지 출력 후 입력을 다시 받도록 한다.
- 구입한 개수만큼 뽑은 로또 번호와 입력 받은 당첨 번호를 비교하여 몇 개가 일치하는지 계산한다.
- 5번에서 계산한 결과를 받아서, 당첨 내역을 형식에 맞게 출력한다.
- (당첨된 금액/구입 금액)으로 수익률을 출력하며, Enum을 사용한다.
- 소수점 둘째 자리에서 반올림하여 출력한다.
- 앞서 작성된 1~7번의 내용을 순서대로 실행하는 컨트롤러를 작성한다.
- 전체 프로그램의 실행흐름을 담당하는 부분이다.
- 이 프로그램의 시작점이며, Controller로 연결된다.
- 각종 예외 상황을 다 통과할 수 있는 테스트 코드 작성을 통해 요구사항을 충족했는지 확인한다.
- 단위 별로 작게 나누어 테스트 한다.
- 클린 코드가 될 수 있도록 디자인 패턴을 참고하여 작성된 코드를 개선한다.