이 프로그램은 사용자에게 로또 번호를 입력 받아서 로또 게임 당 얼마의 수익이 나는지 보여준다. 프로그램의 시나리오를 정확하게 확인하고 개발을 시작한다.
- 게임에 적용 시킬 로또 번호 6개를 입력 받는다. 그리고 자동으로 로또 번호를 생성해준다.
- 이어서 게임 시작을 누르면 자동으로 당첨 번호가 생성되고 이후 당첨 통계를 콘솔로 확인할 수 있다.
- 로또 게임을 진행 할 금액을 입력 받는다.
- 로또는 한 게임 당 천원이다. (한 게임 당 여섯개의 번호가 발급된다.)
- 입력 금액과 로또 한장의 금액이 나눠 떨어져야 한다. (검증로직)
- 1회 구매 한도는 최소 천원이상이다.
- 수동으로 발급 할 로또 게임 수를 입력 받는다. 그리고 그 수에 맞게 로또 번호를 입력 받는다.
- 이어서 수동 발급 장수를 제외한 장수만큼 자동으로 로또 티켓을 생성한다.
- 로또 한 게임에는 여섯 개의 정수가 중복 없이 존재한다.
- 로또 번호는 1 ~ 45 이다.
- 입력 받은 번호는 오름차순으로 정렬 된다.
- 로또 티켓 구매가 완료 되면 게임을 시작한다.
- 로또게임 한 회차당 여섯개의 당첨번호와 보너스 볼이 존재한다.
- 당첨 번호는 중복되는 숫자가 없는 정수 값이다.
- 보너스 볼 역시 당첨번호와 중복되어선 안된다.
- 상금은 아래와 같다.
- 3개 일치 시 상금 : 5,000원
- 4개 일치 시 상금 : 50,000원
- 5개 일치 시 상금 : 1,500,000원
- 5개 일치 + 보너스 볼 상금 : 30,000,000원
- 6개 일치 상금 : 2,000,000,000원 (20억)
- 당첨 결과를 기준으로 구체적인 수익률과 수익률에 대한 해석을 출력할 수 있다.
- 수익률 = 당첨금액 / 구매금액
- 수익률에 따른 해석은 아래를 따른다
- 수익률 < 1 : 손해
- 수익률 = 1 : 본전
- 수익률 > 1 : 이익
- 프로그램이 종료되지 않도록 구성 한다.
- main() 문을 단순화한다.
- main() 함수에는 직접적인 비즈니스 로직이 포함되지 않도록 관리한다.
- maIn() 함수에는 게임을 시작하는 코드만 존재하도록 노력해본다.
- 특정 수익률에 도달할 때 까지 실행 하는 게임 실행 방식도 시나리오를 짜서 개발해본다.
- 난수 생성기 클래스를 만들 수 있다.
- TreeSet 자료구조를 활용하면 6개의 난수를 저장하고 활용하기에 적합하다.
- 로또 번호 생성기 클래스를 만들 수 있다.
- 로또 숫자가 1 ~ 45 값인지 확인한다.
- 로또 게임 플레이 클래스를 만들 수 있다.
- 금액에 관련된 기능을 관리하는 Money 클래스를 만들 수 있다.
- 로또 상금 관련 enum을 만들 수 있다. valueOf() 메서드를 통해 몇 등인지 알 수 있도록 구성 할 수 있다.
- 3개 일치 시 상금 : 5,000원
- 4개 일치 시 상금 : 50,000원
- 5개 일치 시 상금 : 1,500,000원
- 5개 일치 + 보너스 볼 상금 : 30,000,000원
- 6개 일치 상금 : 2,000,000,000원 (20억)
- 프로그램의 스펙은 추가 및 삭제가 가능하다. 본인만의 프로그램 시나리오를 짜서 개발을 진행한다.