From 3847820f359b23f51f9cca422450c9157cebf423 Mon Sep 17 00:00:00 2001
From: oh-yeonzzz <148875041+oh-yeonzzz@users.noreply.github.com>
Date: Wed, 25 Oct 2023 00:44:21 +0900
Subject: [PATCH 01/10] =?UTF-8?q?docs=20:=20=EA=B8=B0=EB=8A=A5=20=EB=AA=A9?=
=?UTF-8?q?=EB=A1=9D=20=EC=9E=91=EC=84=B1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
기능 목록 단위로 구현할 계획
---
README.md | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/README.md b/README.md
index 1bee39036..1100f949c 100644
--- a/README.md
+++ b/README.md
@@ -37,6 +37,34 @@
+## 👀 기능 목록
+<숫자 생성>
+1. 숫자 랜덤 생성(1~9 범위의 3자리 자연수)
+2. 각 자리 숫자는 중복 허용 XX
+
+<입력>
+1.[예외] 숫자가 아닌 값을 입력받은 경우
+2.[예외] 3자리 자연수 아닌 경우
+3.[예외] 각 자릿수의 숫자중 중복된 값이 있는 경우
+4. [예외] 0 이하 음수인 경우
+5. [예외] IllegalArgumentException 발생 시킨 후 종료
+
+<힌트>
+1. 같은 자릿수에 숫자 일치 : 스트라이크
+2. 다른 자릿수에 숫자 일치 : 볼
+3. 다른 자릿수에 다른 수 : 낫싱
+
+<출력>
+1. 볼, 스트라이크 카운트 후 출력
+2. 출력 순서: n볼 m스트라이크
+3. m=3일 때(3 스트라이크) 게임 종료 문구 출력
+
+<종료조건>
+1. 재시작 - 숫자 랜덤 생성 메서드 호출부분으로 돌아감
+2. 입력 종료 - 게임 종료!
+
+
+
## ✍🏻 입출력 요구사항
### ⌨️ 입력
From 227136078f8774a09e34bf2cdf4521ec6f9145ac Mon Sep 17 00:00:00 2001
From: ohyeonji
Date: Wed, 25 Oct 2023 19:34:11 +0900
Subject: [PATCH 02/10] =?UTF-8?q?feat=20:=20Computer(=EC=83=81=EB=8C=80)?=
=?UTF-8?q?=20=EB=82=9C=EC=88=98=20=EC=83=9D=EC=84=B1=20=EB=B2=94=EC=9C=84?=
=?UTF-8?q?=201~9=203=EC=9E=90=EB=A6=BF=EC=88=98=20=EC=9E=90=EC=97=B0?=
=?UTF-8?q?=EC=88=98=20=EC=83=9D=EC=84=B1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/main/java/service/ComputerRandomNum.java | 35 ++++++++++++++++++++
1 file changed, 35 insertions(+)
create mode 100644 src/main/java/service/ComputerRandomNum.java
diff --git a/src/main/java/service/ComputerRandomNum.java b/src/main/java/service/ComputerRandomNum.java
new file mode 100644
index 000000000..33bf3ef21
--- /dev/null
+++ b/src/main/java/service/ComputerRandomNum.java
@@ -0,0 +1,35 @@
+package service;
+
+import java.util.List;
+import java.util.ArrayList;
+import camp.nextstep.edu.missionutils.Randoms;
+
+public class ComputerRandomNum {
+
+ private List computerNumber;
+
+ public ComputerRandomNum() {
+ computerNumber = setGameNumber();
+ }
+
+ public List getComputerNumber() {
+ return computerNumber;
+ }
+ public static int getComputerNum() {
+ return Randoms.pickNumberInRange(1, 9);
+ }
+
+ public List setGameNumber() {
+ List computerNumber = new ArrayList<>();
+ while (computerNumber.size() < 3) {
+ int randomNumber = getComputerNum();
+ if(computerNumber.contains(randomNumber)){
+ continue;
+ }else {
+ computerNumber.add(randomNumber);
+ }
+ }
+ return computerNumber;
+ }
+
+}
From 1d77e35b36a0c5b1e2b66265bb5d25be0bf358bb Mon Sep 17 00:00:00 2001
From: ohyeonji
Date: Wed, 25 Oct 2023 19:43:38 +0900
Subject: [PATCH 03/10] =?UTF-8?q?feat=20:=20=EC=82=AC=EC=9A=A9=EC=9E=90?=
=?UTF-8?q?=EC=97=90=EA=B2=8C=20=EC=88=AB=EC=9E=90=20=EC=9E=85=EB=A0=A5=20?=
=?UTF-8?q?=EB=B0=9B=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84=20?=
=?UTF-8?q?(=EA=B0=81=20=EC=9E=90=EB=A6=AC=20=EC=88=AB=EC=9E=90=20?=
=?UTF-8?q?=EC=A4=91=EB=B3=B5=20=ED=97=88=EC=9A=A9=ED=95=98=EC=A7=80=20?=
=?UTF-8?q?=EC=95=8A=EC=9D=8C)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/main/java/util/InputUtil.java | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
create mode 100644 src/main/java/util/InputUtil.java
diff --git a/src/main/java/util/InputUtil.java b/src/main/java/util/InputUtil.java
new file mode 100644
index 000000000..0a10eba7c
--- /dev/null
+++ b/src/main/java/util/InputUtil.java
@@ -0,0 +1,31 @@
+package util;
+
+import java.util.List;
+import java.util.ArrayList;
+import camp.nextstep.edu.missionutils.Console;
+
+public class InputUtil {
+
+ public List userNumber() {
+ System.out.print("숫자를 입력해주세요 : ");
+ String input = Console.readLine();
+ // 예외 처리 메서드 만들기....
+
+ List userNum = new ArrayList<>();
+ for(String number: input.split("")){
+ userNum.add(Integer.parseInt(number));
+ }
+ return userNum;
+ }
+
+ public boolean replay(){
+ System.out.println("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요.");
+ String input = Console.readLine();
+ char answer = input.charAt(0);
+ if(answer == '1'){
+ return true;
+ }
+ return false;
+ }
+
+}
From ee2938fa4abf19699ca1e5ec434ef8da7c676d51 Mon Sep 17 00:00:00 2001
From: ohyeonji
Date: Wed, 25 Oct 2023 19:44:25 +0900
Subject: [PATCH 04/10] =?UTF-8?q?feat=20:=20=EC=82=AC=EC=9A=A9=EC=9E=90?=
=?UTF-8?q?=EC=97=90=EA=B2=8C=20=EC=9E=85=EB=A0=A5=20=EB=B0=9B=EB=8A=94=20?=
=?UTF-8?q?=EC=88=AB=EC=9E=90=EC=97=90=20=EB=8C=80=ED=95=9C=20=EC=98=88?=
=?UTF-8?q?=EC=99=B8=20=EC=B2=98=EB=A6=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/main/java/util/InputException.java | 50 ++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
create mode 100644 src/main/java/util/InputException.java
diff --git a/src/main/java/util/InputException.java b/src/main/java/util/InputException.java
new file mode 100644
index 000000000..10427ff6c
--- /dev/null
+++ b/src/main/java/util/InputException.java
@@ -0,0 +1,50 @@
+package util;
+
+import java.util.HashSet;
+import java.util.Set;
+
+public class InputException {
+ private String inputNumber;
+
+ public InputException(String inputNumber) {
+
+ isStringLengthCorrect(inputNumber);
+ isDigitPlayerNumber(inputNumber);
+ isDifferentPlayerNumber(inputNumber);
+
+ this.inputNumber = inputNumber;
+ }
+
+ public String getInputNumber() {
+ return inputNumber;
+ }
+
+ public static void isStringLengthCorrect(String word) throws IllegalArgumentException {
+ if (word.length() != 3) {
+ throw new IllegalArgumentException("잘못된 값을 입력하셨습니다. ");
+ }
+ }
+
+
+ public static void isDifferentPlayerNumber(String word) throws IllegalArgumentException {
+ Set set = new HashSet<>();
+
+ for (int i = 0; i < word.length(); i++) {
+ set.add(word.charAt(i));
+ }
+ if (set.size() != word.length()) {
+ throw new IllegalArgumentException("잘못된 값을 입력하셨습니다.");
+ }
+ }
+ public static void isDigitPlayerNumber(String word) {
+ for (int i = 0; i < word.length(); i++) {
+ isDigitCharInString(word, i);
+ }
+ }
+
+ public static void isDigitCharInString(String word, int index) throws IllegalArgumentException {
+ if (!Character.isDigit(word.charAt(index))) {
+ throw new IllegalArgumentException("잘못된 값을 입력하셨습니다.");
+ }
+ }
+}
From 2baf1bb8e378d8f368ab86d73efb8c04fbab7e2a Mon Sep 17 00:00:00 2001
From: ohyeonji
Date: Wed, 25 Oct 2023 19:45:41 +0900
Subject: [PATCH 05/10] =?UTF-8?q?feat=20:=20=EC=8A=A4=ED=8A=B8=EB=9D=BC?=
=?UTF-8?q?=EC=9D=B4=ED=81=AC,=EB=B3=BC,=EB=82=AB=EC=8B=B1=20=ED=8C=90?=
=?UTF-8?q?=EB=B3=84=EC=9D=84=20=EC=9C=84=ED=95=9C=20=EC=88=AB=EC=9E=90=20?=
=?UTF-8?q?=EC=9D=BC=EC=B9=98=EC=97=AC=EB=B6=80=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
---
src/main/java/service/CompareNum.java | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
create mode 100644 src/main/java/service/CompareNum.java
diff --git a/src/main/java/service/CompareNum.java b/src/main/java/service/CompareNum.java
new file mode 100644
index 000000000..6f43ceccb
--- /dev/null
+++ b/src/main/java/service/CompareNum.java
@@ -0,0 +1,26 @@
+package service;
+
+import java.util.List;
+
+public class CompareNum {
+ public int countBall(List computer, List user){
+ int result = 0;
+ for(int i = 0; i < user.size(); i++){
+ if(computer.contains(user.get(i))){
+ result += 1;
+ }
+ }
+ return result;
+ }
+
+ public int countStrike(List computer, List user){
+ int strike = 0;
+ for(int i = 0; i < user.size(); i++){
+ if(computer.get(i) == user.get(i)){
+ strike += 1;
+ }
+ }
+ return strike;
+ }
+
+}
From d75b07ce4e1da4fd1bd3cc8d14e1427ec0c01d5e Mon Sep 17 00:00:00 2001
From: ohyeonji
Date: Wed, 25 Oct 2023 19:46:06 +0900
Subject: [PATCH 06/10] =?UTF-8?q?feat=20:=20=EA=B2=B0=EA=B3=BC=20=EC=B6=9C?=
=?UTF-8?q?=EB=A0=A5=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84(=EC=8A=A4?=
=?UTF-8?q?=ED=8A=B8=EB=9D=BC=EC=9D=B4=ED=81=AC,=EB=B3=BC,=EB=82=AB?=
=?UTF-8?q?=EC=8B=B1)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/main/java/service/JudgeResult.java | 35 ++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
create mode 100644 src/main/java/service/JudgeResult.java
diff --git a/src/main/java/service/JudgeResult.java b/src/main/java/service/JudgeResult.java
new file mode 100644
index 000000000..73dc0c6e2
--- /dev/null
+++ b/src/main/java/service/JudgeResult.java
@@ -0,0 +1,35 @@
+package service;
+
+import java.util.List;
+
+public class JudgeResult {
+
+ CompareNum compare = new CompareNum();
+
+ public String judgement(List computer, List player){
+ int total = compare.countBall(computer, player);
+ int strike = compare.countStrike(computer, player);
+ int ball = total - strike;
+
+ String result = null;
+
+// if(total == 0){
+// return "낫싱";
+// }else if(strike == 0){
+// return ball + "볼";
+// }else if(ball == 0){
+// return strike + "스트라이크";
+// }
+
+ if(total == 0){
+ result = "낫싱";
+ }else if(ball != 0 && strike == 0){
+ result = ball + "볼";
+ }else if(strike != 0 && ball == 0){
+ result = strike + "스트라이크";
+ }else {
+ result = ball + "볼 " + strike + "스트라이크";
+ }
+ return result;
+ }
+}
From 725ba5366a748ff85225c476aff7c774348bacb6 Mon Sep 17 00:00:00 2001
From: ohyeonji
Date: Wed, 25 Oct 2023 19:48:23 +0900
Subject: [PATCH 07/10] =?UTF-8?q?feat=20:=20=EC=95=BC=EA=B5=AC=20=EA=B2=8C?=
=?UTF-8?q?=EC=9E=84=20=EC=8B=A4=ED=96=89=20=EB=B6=80=EB=B6=84(main=20?=
=?UTF-8?q?=EB=A9=94=EC=84=9C=EB=93=9C=20=EC=8B=A4=ED=96=89)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/main/java/baseball/Application.java | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/src/main/java/baseball/Application.java b/src/main/java/baseball/Application.java
index 7f1901b8b..13e210cd5 100644
--- a/src/main/java/baseball/Application.java
+++ b/src/main/java/baseball/Application.java
@@ -1,7 +1,31 @@
package baseball;
+import java.util.List;
+
+import service.ComputerRandomNum;
+import service.JudgeResult;
+import util.InputUtil;
+
public class Application {
public static void main(String[] args) {
//TODO: 숫자 야구 게임 구현
+ //컴퓨터 숫자 생성
+ ComputerRandomNum clearNumber = new ComputerRandomNum();
+ InputUtil inputUtil = new InputUtil();
+ JudgeResult judge = new JudgeResult();
+
+ boolean again = true;
+
+ while (again){
+ List computer = clearNumber.getComputerNumber();
+ String result = "";
+ while (!result.equals("3스트라이크")){
+ result = judge.judgement(computer, inputUtil.userNumber());
+ System.out.println(result);
+ }
+ again = inputUtil.replay();
+ }
}
+
+
}
From fe82ea7b056985ab872d5350439ef648f5cd9fd2 Mon Sep 17 00:00:00 2001
From: ohyeonji
Date: Wed, 25 Oct 2023 19:54:29 +0900
Subject: [PATCH 08/10] =?UTF-8?q?style=20:=20=EC=B6=9C=EB=A0=A5=EB=AC=B8?=
=?UTF-8?q?=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/main/java/baseball/Application.java | 38 ++++++++++++-------------
1 file changed, 19 insertions(+), 19 deletions(-)
diff --git a/src/main/java/baseball/Application.java b/src/main/java/baseball/Application.java
index 13e210cd5..60b9e636c 100644
--- a/src/main/java/baseball/Application.java
+++ b/src/main/java/baseball/Application.java
@@ -7,25 +7,25 @@
import util.InputUtil;
public class Application {
- public static void main(String[] args) {
- //TODO: 숫자 야구 게임 구현
- //컴퓨터 숫자 생성
- ComputerRandomNum clearNumber = new ComputerRandomNum();
- InputUtil inputUtil = new InputUtil();
- JudgeResult judge = new JudgeResult();
+ public static void main(String[] args) {
+ //TODO: 숫자 야구 게임 구현
+ ComputerRandomNum clearNumber = new ComputerRandomNum();
+ InputUtil inputUtil = new InputUtil();
+ JudgeResult judge = new JudgeResult();
+
+ boolean again = true;
+
+ while (again){
+ List computer = clearNumber.getComputerNumber();
+ String result = "";
+ while (!result.equals("3스트라이크")){
+ result = judge.judgement(computer, inputUtil.userNumber());
+ System.out.println(result);
+ }
+ System.out.println("3개의 숫자를 모두 맞히셨습니다! 게임 종료");
+ again = inputUtil.replay();
+ }
+ }
- boolean again = true;
-
- while (again){
- List computer = clearNumber.getComputerNumber();
- String result = "";
- while (!result.equals("3스트라이크")){
- result = judge.judgement(computer, inputUtil.userNumber());
- System.out.println(result);
- }
- again = inputUtil.replay();
- }
- }
-
}
From 683cfb7e07be62adbdfb8386737d04ec80d113f3 Mon Sep 17 00:00:00 2001
From: ohyeonji
Date: Wed, 25 Oct 2023 19:55:08 +0900
Subject: [PATCH 09/10] =?UTF-8?q?style=20:=20=EC=A3=BC=EC=84=9D=EC=A0=9C?=
=?UTF-8?q?=EA=B1=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/main/java/service/JudgeResult.java | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/src/main/java/service/JudgeResult.java b/src/main/java/service/JudgeResult.java
index 73dc0c6e2..7a09c84da 100644
--- a/src/main/java/service/JudgeResult.java
+++ b/src/main/java/service/JudgeResult.java
@@ -11,15 +11,7 @@ public String judgement(List computer, List player){
int strike = compare.countStrike(computer, player);
int ball = total - strike;
- String result = null;
-
-// if(total == 0){
-// return "낫싱";
-// }else if(strike == 0){
-// return ball + "볼";
-// }else if(ball == 0){
-// return strike + "스트라이크";
-// }
+ String result = null;
if(total == 0){
result = "낫싱";
From a90be6712c217e8b03c088e45d141c0197552402 Mon Sep 17 00:00:00 2001
From: ohyeonji
Date: Wed, 25 Oct 2023 20:05:32 +0900
Subject: [PATCH 10/10] git bash commit
---
src/main/java/service/CompareNum.java | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/src/main/java/service/CompareNum.java b/src/main/java/service/CompareNum.java
index 6f43ceccb..e71f98687 100644
--- a/src/main/java/service/CompareNum.java
+++ b/src/main/java/service/CompareNum.java
@@ -12,15 +12,15 @@ public int countBall(List computer, List user){
}
return result;
}
-
- public int countStrike(List computer, List user){
- int strike = 0;
- for(int i = 0; i < user.size(); i++){
- if(computer.get(i) == user.get(i)){
- strike += 1;
- }
- }
- return strike;
- }
-
+
+ public int countStrike(List computer, List user){
+ int strike = 0;
+ for(int i = 0; i < user.size(); i++){
+ if(computer.get(i) == user.get(i)){
+ strike += 1;
+ }
+ }
+ return strike;
+ }
+
}