- 로또 요구사항을 파악한다.
- 요구사항에 대한 구현을 완료한 후 자신의 github 아이디에 해당하는 브랜치에 Pull Request(이하 PR)를 통해 코드 리뷰 요청을 한다.
- 코드 리뷰 피드백에 대한 개선 작업을 하고 다시 PUSH한다.
- 모든 피드백을 완료하면 다음 단계를 도전하고 앞의 과정을 반복한다.
- 문자열 속 구분자를 찾아내는 기능
- 구분자를 이용해 문자열을 배열로 분리하는 기능
- 입력받은 문자 배열을 숫자로 변환하여 합을 반환하는 기능
- 구입 금액을 입력받는 기능
- 금액만큼 로또를 구매하는 기능
- 정해진 숫자 범위에서 입력받은 갯수만큼 서로 다른 숫자를 발행하는 기능
- 지난주 당첨 번호를 입력받는 기능
- 숫자 모음과 숫자 모음중 같은 것을 찾아내는 기능
- 당첨 통계를 출력하는 기능
- 일치하는 숫자 갯수별 금액을 계산하는 기능
- 3개: 5,000원
- 4개: 50,000원
- 5개: 1,500,000원
- 6개: 2,000,000,000원
- 당첨된 최종금액을 구하는 기능
- 구매한 금액과 비교해 수익률을 산정하는 기능
- 보너스 숫자를 입력받는 기능
- 기존 일치하는 숫자외 보너스 숫자 일치여부를 판단하여 2등을 뽑는 기능
- 수동 로또 구매 갯수를 입력받는 기능
- 구매 가능한 갯수보다 높은 숫자 예외처리
- 0보다 작은 숫자 예외처리
- 수동으로 로또번호를 입력 받는 기능
- indent(들여쓰기) depth를 2단계에서 1단계로 줄여라.
- depth의 경우 if문을 사용하는 경우 1단계의 depth가 증가한다. if문 안에 while문을 사용한다면 depth가 2단계가 된다.
- 모든 기능을 TDD로 구현해 단위 테스트가 존재해야 한다. 단, UI(System.out, System.in) 로직은 제외
- 핵심 로직을 구현하는 코드와 UI를 담당하는 로직을 구분한다.
- UI 로직을 InputView, ResultView와 같은 클래스를 추가해 분리한다.
- 함수(또는 메소드)의 길이가 15라인을 넘어가지 않도록 구현한다.
- 함수(또는 메소드)가 한 가지 일만 잘 하도록 구현한다.
- 자바 코드 컨벤션을 지키면서 프로그래밍한다.
- else 예약어를 쓰지 않는다.
- if 조건절에서 값을 return하는 방식으로 구현하면 else를 사용하지 않아도 된다.
- else를 쓰지 말라고 하니 switch/case로 구현하는 경우가 있는데 switch/case도 허용하지 않는다.
- java enum을 적용해 프로그래밍을 구현한다.
- 일급 콜렉션을 쓴다.
- 모든 원시값과 문자열을 포장한다.
- 줄여쓰지 않는다(축약 금지).
- 예외 처리를 통해 에러가 발생하지 않도록 한다.
- java8에 추가된 Optional을 적용해 NullPointerException이 발생하지 않도록 한다.
구입금액을 입력해 주세요.
10000
수동으로 구매할 로또 수를 입력해 주세요.
4
수동으로 구매할 번호를 입력해 주세요.
1,2,3,4,5,6
1,2,3,4,5,7
1,2,3,4,7,8
1,2,3,7,8,9
수동으로 4장, 자동으로 6개를 구매했습니다.
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 7]
[1, 2, 3, 4, 7, 8]
[1, 2, 3, 7, 8, 9]
[5, 7, 9, 17, 35, 39]
[1, 3, 10, 33, 38, 41]
[5, 25, 27, 30, 34, 36]
[2, 6, 20, 26, 29, 45]
[2, 13, 17, 26, 30, 34]
[8, 10, 12, 21, 25, 36]
지난 주 당첨 번호를 입력해 주세요.
1,2,3,4,5,6
보너스 볼을 입력해 주세요.
7
당첨 통계
---------
6개 일치 (2000000000)- 1개
5개 일치, 보너스 볼 일치(30000000원)- 1개
5개 일치 (1500000)- 0개
4개 일치 (50000)- 1개
3개 일치 (5000)- 1개
총 수익률은 203005.50입니다.
구입금액을 입력해 주세요.
ㅁㄴㅇ
숫자만 입력 가능합니다.
구입금액을 입력해 주세요.
-1000
구입 금액은 0보다 작을 수 없습니다.
구입금액을 입력해 주세요.
10000
수동으로 구매할 로또 수를 입력해 주세요.
11
금액보다 구매하려는 로또 갯수가 더 높습니다.
구입금액을 입력해 주세요.
1000
수동으로 구매할 로또 수를 입력해 주세요.
-1
구입 갯수가 0보다 작을 수 없습니다.
구입금액을 입력해 주세요.
1000
수동으로 구매할 로또 수를 입력해 주세요.
1
수동으로 구매할 번호를 입력해 주세요.
1,2,3,4,5,6,7
잘못된 로또 숫자 입니다.