-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
[자동차경주] 박정현 미션 제출합니다. #1475
Open
icekimchi
wants to merge
13
commits into
woowacourse-precourse:main
Choose a base branch
from
icekimchi:icekimchi
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
[자동차경주] 박정현 미션 제출합니다. #1475
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
개발 전에 프로젝트 기능 목록에 대해 정리하였다. 각 목록은 TDD를 생각하며 나눴다. 각 기능 목록을 모두 구현 후에 리펙토링 및 추가 기능을 추가한다.
유효한 입력을 받았을 때, 쉼표로 구분하여 해시맵에 올바르게 저장되는지 확인한다. Application.java에서 입력을 받은 후 run()함수로 넘겨준다. run 함수에서는 blank, null 처리 후에 쉼표(,)로 구분하고, 해시맵에 저장한다. 자동차 이름의 길이가 5 초과일 경우에는 예외를 발생시킨다.
쉼표로 구분한 뒤에 자동차의 이름의 길이가 5를 넘으면 IllegalArgumentException을 발생시킨다.
입력받은 roundCount만큼 반복해 게임을 진행시킨다. randomMove가 4 이상일 때는 전진하고, 4 미만일 경우 멈춘다. BeforEach를 통해 Test를 실행할 때마다 리스트를 초기화했다. 유효한 값을 입력했을 때, 라운드를 진행하면 해시맵이 달라지므로 Key값만 비교해 자동차 이름이 잘 입력되었는지만 확인했다.
컬렉션을 통해 해시맵 value의 최대값(winValue)을 찾았다. stream을 사용해 winValue와 같은 경우 key값을 findWinner에 삽입 컬렌션을 사용해 join() 함수로 쉼표(,)로 결과를 출력하였다.
View 패키지에 inputView, outputView를 작성하였다. camp.nextstep.edu.missionutils.Console을 통해 입력받는다. outputView에서는 결과를 출력하는 부분을 두 개의 함수로 나타냈다.
각각의 예외에 해당하는 메시지를 정의했다. getMessage() 함수로 해당 메시지를 불러온다.
예외 상황을 함수로 정의하고, 해당하는 메시지를 ErrorMessage를 통해 출력한다. roundCount는 숫자여야 하며 1 이상이어야 한다. carNameString은 빈칸이 없어야 하며 carName은 길이가 5 이하여야 한다. carName은 중복될 수 없다.
InputView를 통해 입력받은 데이터를 Validator로 검증한다. carNameString을 쉼표(,)로 구분하고 예외 처리하여 carNames 리스트를 반환한다. roundCountString을 검증하여 int형식의 roundCount로 반환한다.
initCarList()로 입력받은 데이터로 해시맵을 생성한다. raceAllRound()를 통해 roundCount만큼 경기를 진행한다. 각 경기가 진행될 때마다 게임 결과를 출력하며, 경기가 종료되면 getWinnerList()를 통해 우승자 리스트를 가져온다.
race()함수를 통해 데이터를 입력받고 경기를 진행하는 run()을 실행시킨다. run()에서는 service의 raceAllRound()로 경기 후 winnerList를 불러온다. 이를 출력함수 printWinner()로 경기 결과를 출력한다.
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.