Skip to content
 
 

Latest commit

 

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

로또 발매기


  • 우아한 테크코스 프리코스 - 3주차 로또발매기 과제
  • 개발자 - 전재욱

📝 로또 발매기 명세서


1. 로또 번호 생성

  • 숫자 범위: 1부터 45까지.
  • 1개의 로또 티켓: 각 티켓에는 중복되지 않는 6개의 숫자가 1~45 사이에서 무작위로 선택됩니다.

2. 당첨 번호와 보너스 번호

  • 당첨 번호: 1~45 범위의 중복되지 않는 6개의 번호.
  • 보너스 번호: 추가로 선택되는 1개의 고유 번호로, 당첨 번호와 중복되지 않는 1~45 사이의 숫자.

3. 당첨 기준과 상금

등수 당첨 기준 상금
1등 6개 번호 일치 2,000,000,000원
2등 5개 번호 + 보너스 번호 일치 30,000,000원
3등 5개 번호 일치 1,500,000원
4등 4개 번호 일치 50,000원
5등 3개 번호 일치 5,000원

4. 기능 요구사항

  • 로또 구입: 로또 한 장당 1,000원으로, 입력받은 구입 금액에 따라 해당하는 개수만큼 로또를 발행합니다.
  • 당첨 번호 입력: 당첨 번호와 보너스 번호를 사용자로부터 입력받습니다.
  • 당첨 확인 및 수익률 계산: 구매한 로또 번호와 당첨 번호를 비교해 당첨 내역수익률을 출력합니다.
  • 예외 처리: 사용자가 잘못된 값을 입력할 경우 IllegalArgumentException을 발생시키고, "[ERROR]"로 시작하는 메시지를 출력한 후 해당 부분부터 다시 입력을 받습니다. IllegalArgumentException, IllegalStateException 등 명확한 예외 유형을 사용합니다.

👨‍💻 구현해야할 기능 목록

1. 구매할 금액 입력 기능

  • 금액에 대한 예외처리 (음수일시,1000원으로 나눠 떨어지지 않을때, 숫자가 아닐시 ....)

2. 당첨번호 입력 기능

  • 번호입력에 예외처리 (1~45까지만 가능)

3. 보너스번호 입력 기능

  • 번호입력에 예외처리 (1~45까지만 가능)

4. 1~45까지 랜덤수 6개를 뽑는 기능

5. 6개 랜덤수를 출력하는 기능

  • O개를 구매했습니다.안내 및 랜덤수 6개 출력

6. 당첨내역을 출력하는 기능

7. 수익률을 출력하는 기능


프로그래밍 요구 사항

요구 사항 1

  • JDK 버전: JDK 21에서 실행 가능해야 합니다.
  • 시작점: 프로그램 실행 시작점은 Applicationmain() 메서드여야 합니다.
  • 외부 라이브러리: build.gradle 파일은 수정할 수 없으며, 제공된 라이브러리 외에는 추가하지 않습니다.
  • 프로그램 종료 방식: System.exit() 메서드를 사용하지 않습니다.
  • 코드 변경: 특별히 지시가 없는 한, 파일명이나 패키지명 등을 변경하지 않습니다.
  • 코드 스타일: Java 코드 컨벤션을 준수하며, Java Style Guide를 기본 원칙으로 삼습니다.

요구 사항 2

  • Indent Depth 제한: 들여쓰기 깊이를 최대 2로 제한합니다.
    • 힌트: 들여쓰기 깊이를 줄이려면 함수를 분리하여 구현합니다.
  • 삼항 연산자 금지: 3항 연산자를 사용하지 않습니다.
  • 함수 분리: 각 함수는 하나의 작업만 수행하도록 작성합니다.
  • 테스트 코드 작성: JUnit 5AssertJ를 사용하여 작성한 기능이 정상 작동하는지 테스트합니다.

요구 사항 3

  • 함수 길이 제한: 함수의 길이는 15라인을 넘지 않도록 합니다.
  • 단일 책임 원칙: 각 함수가 하나의 일만 수행하도록 구현합니다.
  • else 예약어 금지: else 예약어를 사용하지 않으며, switch/case 문도 허용되지 않습니다.
    • 힌트: if 조건절에서 값을 return하는 방식으로 else를 사용하지 않을 수 있습니다.
  • Java Enum 적용: Enum을 사용하여 프로그램을 구현합니다.
  • 단위 테스트 작성: UI(System.out, System.in, Scanner) 로직을 제외하고 구현한 기능에 대해 단위 테스트를 작성합니다.
    • 테스트 작성이 익숙하지 않다면 LottoTest를 참고하여 학습 후 테스트를 작성합니다.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages