Skip to content

joojimin/java-lotto

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

로또

진행 방법

  • 로또 요구사항을 파악한다.
  • 요구사항에 대한 구현을 완료한 후 자신의 github 아이디에 해당하는 브랜치에 Pull Request(이하 PR)를 통해 코드 리뷰 요청을 한다.
  • 코드 리뷰 피드백에 대한 개선 작업을 하고 다시 PUSH한다.
  • 모든 피드백을 완료하면 다음 단계를 도전하고 앞의 과정을 반복한다.

온라인 코드 리뷰 과정

기능 목록

  1. 문자열 속 구분자를 찾아내는 기능
  2. 구분자를 이용해 문자열을 배열로 분리하는 기능
  3. 입력받은 문자 배열을 숫자로 변환하여 합을 반환하는 기능
  4. 구입 금액을 입력받는 기능
  5. 금액만큼 로또를 구매하는 기능
  6. 정해진 숫자 범위에서 입력받은 갯수만큼 서로 다른 숫자를 발행하는 기능
  7. 지난주 당첨 번호를 입력받는 기능
  8. 숫자 모음과 숫자 모음중 같은 것을 찾아내는 기능
  9. 당첨 통계를 출력하는 기능
  10. 일치하는 숫자 갯수별 금액을 계산하는 기능
    • 3개: 5,000원
    • 4개: 50,000원
    • 5개: 1,500,000원
    • 6개: 2,000,000,000원
  11. 당첨된 최종금액을 구하는 기능
  12. 구매한 금액과 비교해 수익률을 산정하는 기능
  13. 보너스 숫자를 입력받는 기능
  14. 기존 일치하는 숫자외 보너스 숫자 일치여부를 판단하여 2등을 뽑는 기능
  15. 수동 로또 구매 갯수를 입력받는 기능
    • 구매 가능한 갯수보다 높은 숫자 예외처리
    • 0보다 작은 숫자 예외처리
  16. 수동으로 로또번호를 입력 받는 기능

프로그램 요구사항

  • 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입니다.

예외 처리

구입 금액이 숫자가 아니거나 0보다 작을때

구입금액을 입력해 주세요.
ㅁㄴㅇ
숫자만 입력 가능합니다.
구입금액을 입력해 주세요.
-1000
구입 금액은 0보다 작을 수 없습니다.

수동으로 구매할 로또 수가 구입금액보다 높을때

구입금액을 입력해 주세요.
10000

수동으로 구매할 로또 수를 입력해 주세요.
11
금액보다 구매하려는 로또 갯수가 더 높습니다.

수동으로 구매할 로또 수가 음수일때

구입금액을 입력해 주세요.
1000

수동으로 구매할 로또 수를 입력해 주세요.
-1
구입 갯수가 0보다 작을 수 없습니다.

수동으로 구매할 번호가 6개가 아닐때

구입금액을 입력해 주세요.
1000

수동으로 구매할 로또 수를 입력해 주세요.
1

수동으로 구매할 번호를 입력해 주세요.
1,2,3,4,5,6,7
잘못된 로또 숫자 입니다.

About

로또 게임 구현을 관리하는 저장소

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 100.0%