- 쉼표(,) 또는 콜론(:)을 구분자로 가지는 문자열을 전달하는 경우 구분자를 기준으로 분리한 각 숫자의 합을 반환 (예: “” => 0, "1,2" => 3, "1,2,3" => 6, “1,2:3” => 6)
- 앞의 기본 구분자(쉼표, 콜론) 외에 커스텀 구분자를 지정할 수 있다. 커스텀 구분자는 문자열 앞부분의 “//”와 “\n” 사이에 위치하는 문자를 커스텀 구분자로 사용한다. 예를 들어 “//;\n1;2;3”과 같이 값을 입력할 경우 커스텀 구분자는 세미콜론(;)이며, 결과 값은 6이 반환되어야 한다.
- 문자열 계산기에 숫자 이외의 값 또는 음수를 전달하는 경우
RuntimeException
예외를 throw 한다.
- 문자열을 입력 받아
덧셈
기능을 수행하는 계산기 구현- 아래와 같은 문자열을 입력 받을 때, 0을 반환
- null
- 빈 문자열
- 숫자들을 구분자로 입력할 경우 입력 받은 숫자의 합을 반환
- 컴마(,) 구분자
- 콜론(:) 구분자
-
//
와\n
문자 사이에 커스텀 구분자를 지정하여 합을 반환 - 음수가 전달되는 경우 RuntimeException 예외 발생
- 아래와 같은 문자열을 입력 받을 때, 0을 반환
- 로또 구입 금액을 입력하면 구입 금액에 해당하는 로또를 발급해야 한다.
- 로또 1장의 가격은 1000원이다.
- 6개의 숫자를 포함하는 로또 티켓 구현
- 로또 티켓 발급기 구현
- 로또 판매점 구현
- 로또 수익률 연산 구현
- 로또 UI 구현
- 로또 메인 구현
- 2등을 위해 추가 번호를 하나 더 추첨한다.
- 당첨 통계에 2등도 추가해야 한다.
- 일급 컬렉션을 쓴다. 6개의 숫자 값을 가지는 컬렉션을 감싸는 객체를 추가해 구현해 본다.
- 하드 코딩을 하지 않기 위해 상수 값을 사용하면 많은 상수 값이 발생한다. Enum 클래스를 활용해 상수 값을 제거한다.
- 즉, Enum 클래스를 활용해 일치하는 수를 로또 등수로 변경해 본다.
- 로또 보너스 당첨 번호 구현
- 로또 보너스 당첨 번호 UI 구현
- 현재 로또 생성기는 자동 생성 기능만 제공한다. 사용자가 수동으로 추첨 번호를 입력할 수 있도록 해야 한다.
- 입력한 금액, 자동 생성 숫자, 수동 생성 번호를 입력하도록 해야 한다.
- 모든 원시값과 문자열을 포장한다.
- 로또 숫자 하나는 Int다. 이 숫자 하나를 추상화한 LottoNumber를 추가해 구현한다.
- 예외 처리를 통해 에러가 발생하지 않도록 한다.
- 참고로 코틀린에서는 아래와 같이 예외 처리를 한다. 장기적으로는 아래와 같이 예외 처리하는 걸 연습해 본다.
- 논리적인 오류일 때만 예외를 던진다.
- 논리적인 오류가 아니면 예외를 던지지 말고 null을 반환한다.
- 실패하는 경우가 복잡해서 null로 처리할 수 없으면 sealed class를 반환한다.
- 일반적인 코틀린 코드에서 try-catch를 사용하지 않는다.
- 원시타입 Wrapping 하기
- LottoNumber
- 수동 번호 입력 기능 구현
- 수동 번호 입력 UI 구현