- 로또 게임 기능을 구현해야 한다. 규칙을 모르면 검색해 로또 규칙을 찾아본다.
- 로또 구입 금액을 입력하면 구입 금액에 해당하는 로또를 발급해야 한다.
- 로또 1장의 가격은 1000원이다.
- 로또 당첨 금액은 고정되어 있는 것으로 한다.
- 수익률을 계산해 출력해야 한다.
- 추첨 번호를 자동으로 생성해야 한다.
- 사용자가 수동으로 추첨 번호를 입력할 수 있도록 해야 한다.
- 입력한 금액, 자동 생성 숫자, 수동 생성 번호를 입력하도록 해야 한다.
- 예외가 발생하는 부분에 대해 자바 Exception을 적용해 예외처리한다.
- 사용자가 입력한 값에 대한 예외 처리를 철저히 한다.
- 배열 대신 ArrayList를 사용한다.
- 모든 원시 값과 문자열을 포장한다.
- 줄여쓰지 않는다(축약 금지).
- 일급 콜렉션을 쓴다.
- 모든 로직에 단위 테스트를 구현한다. 단, UI(System.out, System.in) 로직은 제외
- MVC 패턴 구조를 유지하면서 구현한다.
- 자바 코드 컨벤션을 지키면서 프로그래밍한다.
- indent(인덴트, 들여쓰기) depth를 2을 넘지 않도록 구현한다. 1까지만 허용한다.
- 예를 들어 while문 안에 if문이 있으면 들여쓰기는 2이다.
- 힌트: indent(인덴트, 들여쓰기) depth를 줄이는 좋은 방법은 함수(또는 메소드)를 분리하면 된다.
- else 예약어를 쓰지 않는다.
- 힌트: if 조건절에서 값을 return하는 방식으로 구현하면 else를 사용하지 않아도 된다.
- else를 쓰지 말라고 하니 switch/case로 구현하는 경우가 있는데 switch/case도 허용하지 않는다.
- 함수(또는 메소드)의 길이가 10라인을 넘어가지 않도록 구현한다.
- 함수(또는 메소드)가 한 가지 일만 잘 하도록 구현한다.
- 구입 금액 입력받기.
- 최소 1000원 이상으로 입력받고, 1000원 단위로 입력받기.
- 수동으로 생성할 개수 입력받기.
- 입력한 금액으로 살 수 있는 개수 이하로 입력받기.
- 적어도 0이상이어야 함. (마이너스 개수 불가능)
- 수동으로 생성할 로또 번호 입력받기.
- 중복되지 않는번호 6개를 한세트로, 2번에서 입력받은 개수 세트만큼 번호를 입력받음.
- 수동번호 로또 생성.
- 3번에서 입력된 수동번호 리스트를 통해 해당 번호리스트를 지닌 로또 만듬.
- 자동번호 로또 생성.
- 전체 개수중 2번 개수를 뺀 나머지 개수만큼 자동번호로 로또를 생성.
- 구매된 로또 내용 출력해주기.
- 당첨번호와 보너스 번호 입력받기.
- 중복되지 않는 6개의 당첨번호와 1개의 보너스 번호 입력받기.
- 당첨번호와 구매된 로또 비교하여 당첨 통계 출력하기.
