From 566fb7bb5903dacde8336eb126c462d0c75d645b Mon Sep 17 00:00:00 2001 From: szoon2426 Date: Fri, 21 Feb 2025 10:54:31 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=EB=A6=AC=EB=93=9C=EB=AF=B8=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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 From f73ef6c0dc744988c83e84688bbc938ffad3f19a Mon Sep 17 00:00:00 2001 From: szoon2426 Date: Fri, 21 Feb 2025 10:59:51 +0900 Subject: [PATCH 2/3] =?UTF-8?q?MVC=20=ED=8C=8C=EC=9D=BC=20=EA=B5=AC?= =?UTF-8?q?=EC=A1=B0=20=EB=8F=84=EC=9E=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/lotto/{ => main}/Application.java | 2 +- src/main/java/lotto/{ => model}/Lotto.java | 2 +- src/test/java/lotto/ApplicationTest.java | 1 + src/test/java/lotto/LottoTest.java | 1 + 4 files changed, 4 insertions(+), 2 deletions(-) rename src/main/java/lotto/{ => main}/Application.java (85%) rename src/main/java/lotto/{ => model}/Lotto.java (95%) 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/Lotto.java b/src/main/java/lotto/model/Lotto.java similarity index 95% rename from src/main/java/lotto/Lotto.java rename to src/main/java/lotto/model/Lotto.java index 88fc5cf..da4f30b 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; 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; From 680a6ca425e6c0c772485690f61e94e06b38251b Mon Sep 17 00:00:00 2001 From: szoon2426 Date: Fri, 21 Feb 2025 23:31:27 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=EB=AF=B8=EC=99=84)=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lotto/controller/LottoController.java | 24 +++++++++++++++++++ src/main/java/lotto/main/AppConfig.java | 20 ++++++++++++++++ src/main/java/lotto/model/ArrayOfLotto.java | 4 ++++ src/main/java/lotto/model/Lotto.java | 3 +++ src/main/java/lotto/model/LottoComputer.java | 8 +++++++ .../java/lotto/service/MessageConstants.java | 21 ++++++++++++++++ src/main/java/lotto/view/InputView.java | 19 +++++++++++++++ src/main/java/lotto/view/OutputView.java | 24 +++++++++++++++++++ 8 files changed, 123 insertions(+) create mode 100644 src/main/java/lotto/controller/LottoController.java create mode 100644 src/main/java/lotto/main/AppConfig.java create mode 100644 src/main/java/lotto/model/ArrayOfLotto.java create mode 100644 src/main/java/lotto/model/LottoComputer.java create mode 100644 src/main/java/lotto/service/MessageConstants.java create mode 100644 src/main/java/lotto/view/InputView.java create mode 100644 src/main/java/lotto/view/OutputView.java 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/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/model/Lotto.java b/src/main/java/lotto/model/Lotto.java index da4f30b..69ae191 100644 --- a/src/main/java/lotto/model/Lotto.java +++ b/src/main/java/lotto/model/Lotto.java @@ -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); + } +}