-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[로또] 김채원 미션 제출합니다. #1340
Open
Dim-chae
wants to merge
15
commits into
woowacourse-precourse:main
Choose a base branch
from
Dim-chae:Dim-chae
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
[로또] 김채원 미션 제출합니다. #1340
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[기능 요구 사항] 로또 문제에 대한 로직을 기능 별로 분리 및 순차 정리 - 초기 입력: 구입 금액 / 당첨 번호 6개 / 보너스 번호 1개 - 구매 수량에 따른 난수 생성 (1-45 범위 내 중복 없는 6개의 수) - 구매 수량 및 생성된 난수 출력 - 당첨 케이스에 따른 당첨 여부 판별 - 당첨 통계(수익률, 총 당첨 내역) 출력 [예외 케이스] 각 입력에 따라 계산이 되지 않는 수를 구분하여 예외 케이스 작성 기본(모든 입력에 적용) / 구입 금액 / 당첨 번호 / 쉼표 기준 6개 번호
- 구입 금액을 입력 받은 다음, 1000으로 나눈 값을 lottoCount(구매 수량) 변수에 저장 - 입력 받은 값이 숫자가 아닌 경우 IllegalArgumentException 반환
- 당첨 번호를 입력 받아 lottoNumber 변수에 저장 (parsing을 위해 String으로 입력 받음) - 보너스 번호를 입력 받아 bonusNumber 변수에 저장 - 보너스 번호를 숫자로 입력하지 않을 경우 IllegalArgumentException 반환
- lottoCount, bonusNumber 변수의 선언이 try 문 내에 있어 외부에서 접근 불가능한 문제를 try 문 외부로 이동함으로써 해결
- 입력을 받아 바로 1000으로 나누지 않고 money 변수를 추가하여 구입 금액 값의 검사를 진행함 - 검사가 완료된 money의 값만 lottoCount 변수를 1000으로 나눈 값으로 저장함
- Randoms.pickUniqueNumbersInRange() 메소드를 이용하여 1부터 45까지 무작위로 중복 없이 6개의 값을 생성하고 저장함 - 구입 금액을 입력 받을 때 계산한 구매 수량만큼 반복함
- 구매 수량과 그 수량만큼 저장한 로또 번호를 6개씩 불러와서 출력함 - 생성 및 저장한 로또 번호를 불러오기 위해 Lotto 클래스의 numbers 컨테이너 값을 반환하는 getNumbers() 메소드 추가
- 당첨 번호 문자열을 split() 메소드를 통해 쉼표 단위로 나눈 다음, 반복문을 통해 int 타입으로 변환하고 당첨 번호(winningNumbers) 컨테이너에 저장함
- 각 로또 번호가 당첨 번호와 일치하면 일치 개수 변수를 1 더하고, 보너스 번호와 일치하면 hasBonus 변수를 true로 변경함 - 각 인덱스를 당첨 번호와 생성된 로또 번호가 몇 개 일치하는지 나타내도록 설정함 (7의 경우 5개 및 보너스 볼 일치)
[총 당첨 금액] - 각 당첨 케이스(3개 / 4개 / 5개 / 5개 및 보너스 볼 / 6개 일치)가 나온 횟수와 당첨 금액을 곱하여 계산함 - 큰 수를 가독성 있게 표현하기 위해 당첨 금액 표기에 언더바를 이용함 [수익률] - 총 당첨 금액을 100으로 곱한 값(백분율)과 구입 금액을 나누어 계산함
- 당첨 통계: 당첨 결과 배열을 인덱스를 이용해 꺼내어 각 당첨 케이스 별로 출력함 - 수익률: 소수점 둘째 자리에서 반올림하도록 포맷하여 출력함
- Collections.sort() 메소드를 사용하여 생성된 로또 번호들을 1장(번호 6개) 기준으로 정렬함
- 중복된 숫자, 1-45 범위를 넘는 숫자에 대한 검사 로직을 추가함
- 빈 문자열, 범위를 넘는 수, 0, 음수에 대한 테스트 케이스를 추가함
- Lotto: 로또 번호 관리 및 유효성 검사 - LottoGenerator: 랜덤 로또 번호 생성 - LottoGame: 로또 게임 진행 및 결과 계산 - InputProcessor: 사용자 입력 처리 - InputValidator: 입력값 유효성 검사 - WinningResult: 당첨 결과 관리 및 통계 계산 - LottoRank: 당첨 등수 및 상금 정의 (enum) - Application: 메인 애플리케이션 실행
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.