diff --git a/README.md b/README.md index 5fa2560..fd8d39b 100644 --- a/README.md +++ b/README.md @@ -1 +1,7 @@ -# java-lotto-precourse +# 기능 구현 목록 +1. - 로또 구입 금액을 입력하면 구입 금액에 해당하는 만큼 로또를 발행해야 한다. + - 로또 1장의 가격은 1,000원이다. + - 당첨 번호와 보너스 번호를 입력받는다. + - 사용자가 구매한 로또 번호와 당첨 번호를 비교하여 당첨 내역 및 수익률을 출력하고 로또 게임을 종료한다. +2. - 사용자가 잘못된 값을 입력할 경우 `IllegalArgumentException`를 발생시키고, "[ERROR]"로 시작하는 에러 메시지를 출력 후 그 부분부터 입력을 다시 받는다. + - `Exception`이 아닌 `IllegalArgumentException`, `IllegalStateException` 등과 같은 명확한 유형을 처리한다. \ No newline at end of file diff --git a/src/main/java/lotto/controller/LottoController.java b/src/main/java/lotto/controller/LottoController.java new file mode 100644 index 0000000..7933db0 --- /dev/null +++ b/src/main/java/lotto/controller/LottoController.java @@ -0,0 +1,24 @@ +package lotto.controller; + +import lotto.view.*; +import lotto.model.Lotto; + +public class LottoController { + InputView inputView; + OutputView outputView; + Lotto lotto; + + public LottoController( + InputView inputView, OutputView outputView, Lotto lotto + ){ + this.inputView = inputView; + this.outputView = outputView; + this.lotto = lotto; + } + + public void run(){ + int price = inputView.getPrice(); + outputView.printLottoNum();; + + } +} diff --git a/src/main/java/lotto/main/AppConfig.java b/src/main/java/lotto/main/AppConfig.java new file mode 100644 index 0000000..695808e --- /dev/null +++ b/src/main/java/lotto/main/AppConfig.java @@ -0,0 +1,20 @@ +package lotto.main; + +import lotto.controller.LottoController; +import lotto.view.InputView; +import lotto.view.OutputView; + +public class AppConfig { + public InputView inputView(){ + return new InputView(); + } + + public OutputView outputView(){ + return new OutputView(); + } + + public LottoController lottoController(){ + return new LottoController(); + } + +} diff --git a/src/main/java/lotto/Application.java b/src/main/java/lotto/main/Application.java similarity index 85% rename from src/main/java/lotto/Application.java rename to src/main/java/lotto/main/Application.java index d190922..6ec7a05 100644 --- a/src/main/java/lotto/Application.java +++ b/src/main/java/lotto/main/Application.java @@ -1,4 +1,4 @@ -package lotto; +package lotto.main; public class Application { public static void main(String[] args) { diff --git a/src/main/java/lotto/model/ArrayOfLotto.java b/src/main/java/lotto/model/ArrayOfLotto.java new file mode 100644 index 0000000..3006b3c --- /dev/null +++ b/src/main/java/lotto/model/ArrayOfLotto.java @@ -0,0 +1,4 @@ +package lotto.model; + +public class ArrayOfLotto { +} diff --git a/src/main/java/lotto/Lotto.java b/src/main/java/lotto/model/Lotto.java similarity index 83% rename from src/main/java/lotto/Lotto.java rename to src/main/java/lotto/model/Lotto.java index 88fc5cf..69ae191 100644 --- a/src/main/java/lotto/Lotto.java +++ b/src/main/java/lotto/model/Lotto.java @@ -1,4 +1,4 @@ -package lotto; +package lotto.model; import java.util.List; @@ -17,4 +17,7 @@ private void validate(List numbers) { } // TODO: 추가 기능 구현 + public List getLotto(){ + return numbers; + } } diff --git a/src/main/java/lotto/model/LottoComputer.java b/src/main/java/lotto/model/LottoComputer.java new file mode 100644 index 0000000..daa11c3 --- /dev/null +++ b/src/main/java/lotto/model/LottoComputer.java @@ -0,0 +1,8 @@ +package lotto.model; + +import lotto.view.InputView; +import lotto.view.OutputView; + +public class LottoComputer { + +} diff --git a/src/main/java/lotto/service/MessageConstants.java b/src/main/java/lotto/service/MessageConstants.java new file mode 100644 index 0000000..de89162 --- /dev/null +++ b/src/main/java/lotto/service/MessageConstants.java @@ -0,0 +1,21 @@ +package lotto.service; + +public enum MessageConstants { + BUY_GUIDE_MESSAGE("구입 금액을 입력해 주세요."), + BUY_RESULT_MESSAGE("%d개를 구매했습니다."), + WIN_NUM_GUIDE_MESSAGE("당첨 번호를 입력해주세요."), + BONUS_NUM_GUIDE_MESSAGE("보너스 번호를 입력해주세요."), + WIN_RESULT_MESSAGE("당첨통계\n---"), + WIN_NUM_RESULT_MESSAGE("%d개 일치 (%s 원) - %d개"), + FINAL_RESULT_MESSAGE("총 수익률은 %d% 입니다."); + + private final String message; + + MessageConstants(String message){ + this.message = message; + } + + public String getMessage(){ + return this.message; + } +} diff --git a/src/main/java/lotto/view/InputView.java b/src/main/java/lotto/view/InputView.java new file mode 100644 index 0000000..1486dc2 --- /dev/null +++ b/src/main/java/lotto/view/InputView.java @@ -0,0 +1,19 @@ +package lotto.view; + +import lotto.service.MessageConstants; +import camp.nextstep.edu.missionutils.Console; + +public class InputView { + public int getPrice(){ + System.out.println(MessageConstants.BUY_GUIDE_MESSAGE.getMessage()); + return Integer.parseInt(Console.readLine()); + } + public String getWinNum(){ + System.out.println(MessageConstants.WIN_NUM_GUIDE_MESSAGE.getMessage()); + return Console.readLine(); + } + public int getBonusNum(){ + System.out.println(MessageConstants.BONUS_NUM_GUIDE_MESSAGE.getMessage()); + return Integer.parseInt(Console.readLine()); + } +} diff --git a/src/main/java/lotto/view/OutputView.java b/src/main/java/lotto/view/OutputView.java new file mode 100644 index 0000000..9109f20 --- /dev/null +++ b/src/main/java/lotto/view/OutputView.java @@ -0,0 +1,24 @@ +package lotto.view; + +import lotto.service.MessageConstants; +import lotto.model.Lotto; +import java.util.ArrayList; + +public class OutputView { + public void printLottoNum(int numOfLotto){ + System.out.println( + String.format(MessageConstants.BUY_RESULT_MESSAGE.getMessage(), numOfLotto) + ); + } + + public void printLottoArr(){ + + } + + public void printWinStats(int[] result){ + System.out.println(MessageConstants.WIN_RESULT_MESSAGE.getMessage()); + for(int i = 0; i<5; i++){ // 3부터 6까지 돌면서 몇개 맞는지 출력 + } + System.out.println(MessageConstants.FINAL_RESULT_MESSAGE); + } +} diff --git a/src/test/java/lotto/ApplicationTest.java b/src/test/java/lotto/ApplicationTest.java index a15c7d1..b3e0ab4 100644 --- a/src/test/java/lotto/ApplicationTest.java +++ b/src/test/java/lotto/ApplicationTest.java @@ -1,6 +1,7 @@ package lotto; import camp.nextstep.edu.missionutils.test.NsTest; +import lotto.main.Application; import org.junit.jupiter.api.Test; import java.util.List; diff --git a/src/test/java/lotto/LottoTest.java b/src/test/java/lotto/LottoTest.java index 309f4e5..c8ca9d6 100644 --- a/src/test/java/lotto/LottoTest.java +++ b/src/test/java/lotto/LottoTest.java @@ -1,5 +1,6 @@ package lotto; +import lotto.model.Lotto; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test;