From d5fc973db82d6a6bcf74e441afa5101791b2327a Mon Sep 17 00:00:00 2001 From: mutjin Date: Wed, 25 Oct 2023 20:19:33 +0900 Subject: [PATCH 1/7] first commit --- src/main/java/baseball/Application.java | 77 ++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/src/main/java/baseball/Application.java b/src/main/java/baseball/Application.java index 7f1901b8b..9d8464753 100644 --- a/src/main/java/baseball/Application.java +++ b/src/main/java/baseball/Application.java @@ -1,7 +1,82 @@ package baseball; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Scanner; + + public class Application { public static void main(String[] args) { - //TODO: 숫자 야구 게임 구현 + playNumberBaseballGame(); + } + + private static void playNumberBaseballGame() { + Scanner scanner = new Scanner(System.in); + System.out.println("숫자 야구 게임을 시작합니다. 1부터 9까지 서로 다른 숫자로 이루어진 3자리 수를 맞춰보세요."); + + while (true) { + // 컴퓨터가 생각한 3개의 숫자를 무작위로 생성 + List computerNumbers = generateRandomNumbers(); + + while (true) { + System.out.print("숫자를 입력해주세요 : "); + String input = scanner.nextLine(); + + if (input.length() != 3 || !input.matches("[1-9]+")) { + System.out.println("잘못된 입력입니다. 1부터 9까지 서로 다른 3자리 숫자를 입력하세요."); + continue; + } + + int[] guess = new int[3]; + for (int i = 0; i < 3; i++) { + guess[i] = Character.getNumericValue(input.charAt(i)); + } + + int strikes = 0; + int balls = 0; + + for (int i = 0; i < 3; i++) { + if (guess[i] == computerNumbers.get(i)) { + strikes++; + } else if (computerNumbers.contains(guess[i])) { + balls++; + } + } + + if (strikes == 3) { + System.out.println("3 스트라이크"); + System.out.println("3개의 숫자를 모두 맞히셨습니다! 게임 종료"); + break; + } else if (strikes > 0 || balls > 0) { + System.out.println(balls + "볼 "+ strikes + "스트라이크"); + } else { + System.out.println("낫싱"); + } + } + + System.out.print("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요.\n"); + int playAgain = scanner.nextInt(); + scanner.nextLine(); + + if (playAgain==2) { + System.out.println("게임을 종료합니다."); + break; + } + else if (playAgain != 1) { + System.out.println("잘못된 입력입니다. 1 또는 2를 입력하세요."); + break; + } + } + } + + private static List generateRandomNumbers() { + List numbers = new ArrayList<>(); + for (int i = 1; i <= 9; i++) { + numbers.add(i); + } + Collections.shuffle(numbers); + return numbers.subList(0, 3); } } + From fc3bf5f4b53c255dfda39316568effc455f7df44 Mon Sep 17 00:00:00 2001 From: mutjin Date: Wed, 25 Oct 2023 21:58:59 +0900 Subject: [PATCH 2/7] second commit --- src/main/java/baseball/Application.java | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/main/java/baseball/Application.java b/src/main/java/baseball/Application.java index 9d8464753..1065ac546 100644 --- a/src/main/java/baseball/Application.java +++ b/src/main/java/baseball/Application.java @@ -5,6 +5,9 @@ import java.util.List; import java.util.Scanner; +import camp.nextstep.edu.missionutils.Randoms; +import camp.nextstep.edu.missionutils.Console; + public class Application { public static void main(String[] args) { @@ -12,7 +15,7 @@ public static void main(String[] args) { } private static void playNumberBaseballGame() { - Scanner scanner = new Scanner(System.in); + Console scanner = new Console(System.in); System.out.println("숫자 야구 게임을 시작합니다. 1부터 9까지 서로 다른 숫자로 이루어진 3자리 수를 맞춰보세요."); while (true) { @@ -21,7 +24,7 @@ private static void playNumberBaseballGame() { while (true) { System.out.print("숫자를 입력해주세요 : "); - String input = scanner.nextLine(); + String input = scanner.readLine(); if (input.length() != 3 || !input.matches("[1-9]+")) { System.out.println("잘못된 입력입니다. 1부터 9까지 서로 다른 3자리 숫자를 입력하세요."); @@ -56,8 +59,8 @@ private static void playNumberBaseballGame() { } System.out.print("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요.\n"); - int playAgain = scanner.nextInt(); - scanner.nextLine(); + int playAgain = scanner.readLine(); + scanner.readLine(); if (playAgain==2) { System.out.println("게임을 종료합니다."); @@ -72,11 +75,11 @@ else if (playAgain != 1) { private static List generateRandomNumbers() { List numbers = new ArrayList<>(); - for (int i = 1; i <= 9; i++) { - numbers.add(i); - } - Collections.shuffle(numbers); - return numbers.subList(0, 3); + int n = Randoms.pickNumberInRange(1, 100); + numbers.add(n / 100); // 백의 자리 숫자 + numbers.add((n % 100) / 10); // 십의 자리 숫자 + numbers.add(n % 10); // 일의 자리 숫자 + return numbers } } From e6e433e679f256a5fc3033982356f4495dd436da Mon Sep 17 00:00:00 2001 From: mutjin Date: Wed, 25 Oct 2023 22:30:49 +0900 Subject: [PATCH 3/7] sample code --- src/main/java/baseball/Application.java | 310 ++++++++++++++++++------ 1 file changed, 232 insertions(+), 78 deletions(-) diff --git a/src/main/java/baseball/Application.java b/src/main/java/baseball/Application.java index 1065ac546..0b4a063ce 100644 --- a/src/main/java/baseball/Application.java +++ b/src/main/java/baseball/Application.java @@ -1,85 +1,239 @@ package baseball; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Scanner; +import static camp.nextstep.edu.missionutils.Randoms.pickNumberInRange; +import static camp.nextstep.edu.missionutils.Console.readLine; -import camp.nextstep.edu.missionutils.Randoms; -import camp.nextstep.edu.missionutils.Console; +public class Application { + public static void main(String[] args) { + Game rightAnswer = new Game(); + Game.init(rightAnswer); + } +} +class Array { + static boolean checkArrayContains(final int[] arr, final int number) { + for (int value : arr) { + if (value == number) { + return true; + } + } + return false; + } + + static boolean checkArrayContains(final char[] arr, final char number) { + for (int value : arr) { + if (value == number) { + return true; + } + } + return false; + } + + static char[] getCharArrayFromString(String str) { + char[] charArray = new char[str.length()]; + + for (int i = 0; i < str.length(); i++) { + charArray[i] = str.charAt(i); + } + + return charArray; + } + + static int getIndexFromValue(final int[] arr, final int value) { + for (int i = 0; i < arr.length; i++) { + if (arr[i] == value) { + return i; + } + } + return -1; + } +} -public class Application { - public static void main(String[] args) { - playNumberBaseballGame(); - } - - private static void playNumberBaseballGame() { - Console scanner = new Console(System.in); - System.out.println("숫자 야구 게임을 시작합니다. 1부터 9까지 서로 다른 숫자로 이루어진 3자리 수를 맞춰보세요."); - - while (true) { - // 컴퓨터가 생각한 3개의 숫자를 무작위로 생성 - List computerNumbers = generateRandomNumbers(); - - while (true) { - System.out.print("숫자를 입력해주세요 : "); - String input = scanner.readLine(); - - if (input.length() != 3 || !input.matches("[1-9]+")) { - System.out.println("잘못된 입력입니다. 1부터 9까지 서로 다른 3자리 숫자를 입력하세요."); - continue; - } - - int[] guess = new int[3]; - for (int i = 0; i < 3; i++) { - guess[i] = Character.getNumericValue(input.charAt(i)); - } - - int strikes = 0; - int balls = 0; - - for (int i = 0; i < 3; i++) { - if (guess[i] == computerNumbers.get(i)) { - strikes++; - } else if (computerNumbers.contains(guess[i])) { - balls++; - } - } - - if (strikes == 3) { - System.out.println("3 스트라이크"); - System.out.println("3개의 숫자를 모두 맞히셨습니다! 게임 종료"); - break; - } else if (strikes > 0 || balls > 0) { - System.out.println(balls + "볼 "+ strikes + "스트라이크"); - } else { - System.out.println("낫싱"); - } - } - - System.out.print("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요.\n"); - int playAgain = scanner.readLine(); - scanner.readLine(); - - if (playAgain==2) { - System.out.println("게임을 종료합니다."); - break; - } - else if (playAgain != 1) { - System.out.println("잘못된 입력입니다. 1 또는 2를 입력하세요."); - break; - } - } - } - - private static List generateRandomNumbers() { - List numbers = new ArrayList<>(); - int n = Randoms.pickNumberInRange(1, 100); - numbers.add(n / 100); // 백의 자리 숫자 - numbers.add((n % 100) / 10); // 십의 자리 숫자 - numbers.add(n % 10); // 일의 자리 숫자 - return numbers - } +class Game { + private static final int START_RANGE = 1; + private static final int END_RANGE = 9; + static final int NUMBER_COUNT = 3; + private static final int NEW_GAME = 1; + private static final int QUIT_GAME = 2; + + private static final String GET_NUMBER_MESSAGE = "숫자를 입력해주세요 : "; + private static final String SUCCESS_MESSAGE = Game.NUMBER_COUNT + "개의 숫자를 모두 맞히셨습니다! 게임 종료"; + private static final String NEW_GAME_CHECK_MESSAGE = "게임을 새로 시작하려면 " + Game.NEW_GAME + ", 종료하려면 " + Game.QUIT_GAME + "를 입력하세요."; + + int[] number = new int[NUMBER_COUNT]; + + Game() { + int nowRandomNum; + int nowNumberIndex = 0; + + while (nowNumberIndex < NUMBER_COUNT) { + nowRandomNum = this.getRandomNumber(); + + if (!Array.checkArrayContains(number, nowRandomNum)) { + number[nowNumberIndex++] = nowRandomNum; + } + } + } + + Game(String str) { + for (int i = 0; i < Game.NUMBER_COUNT; i++) { + number[i] = Integer.parseInt(str.charAt(i) + ""); + } + } + + private int getRandomNumber() { + return pickNumberInRange(Game.START_RANGE, Game.END_RANGE); + } + + public static void init(Game rightAnswer) { + Game answer = Game.getAnswer(); + + Hint hint = new Hint(); + hint.compareAnswer(answer, rightAnswer); + hint.showResult(); + + if (hint.strike != Game.NUMBER_COUNT) { + Game.init(rightAnswer); + return; + } + + int newGameAnswer = Game.checkNewGameStart(); + if (newGameAnswer == Game.NEW_GAME) { + rightAnswer = new Game(); + Game.init(rightAnswer); + } + } + + private static Game getAnswer() { + System.out.print(GET_NUMBER_MESSAGE); + String userInput = readLine(); + Game.checkInputValue(userInput); + + return new Game(userInput); + } + + private static int checkNewGameStart() { + System.out.println(SUCCESS_MESSAGE); + System.out.println(NEW_GAME_CHECK_MESSAGE); + + String newGameAnswer = readLine(); + return Game.getNewGameAnswerNumber(newGameAnswer); + } + + private static int getNewGameAnswerNumber(String str) { + int intValue; + try { + intValue = Integer.parseInt(str); + } catch (NumberFormatException e) { + throw new IllegalArgumentException(); + } + + if (intValue != 1 && intValue != 2) { + throw new IllegalArgumentException(); + } + + return intValue; + } + + public String toString() { + return "number: " + this.number[0] + this.number[1] + this.number[2]; + } + + static void checkInputValue(final String str) { + if (!Game.checkInputLength(str)) { + throw new IllegalArgumentException(); + } + if (!Game.checkInputNumber(str)) { + throw new IllegalArgumentException(); + } + if (!Game.checkEqualNumber(str)) { + throw new IllegalArgumentException(); + } + } + + static boolean checkInputLength(final String str) { + return str.length() == Game.NUMBER_COUNT; + } + + static boolean checkInputNumber(String str) { + try { + int numberValue = Integer.parseInt(str); + } catch (NumberFormatException e) { + return false; + } + char[] numberArray = Array.getCharArrayFromString(str); + return !Array.checkArrayContains(numberArray, '0'); + } + + static boolean checkEqualNumber(String str) { + char[] checkEqual = new char[str.length()]; + char[] word = Array.getCharArrayFromString(str); + + for (int i = 0; i < str.length(); i++) { + if (Array.checkArrayContains(checkEqual, word[i])) { + return false; + } + checkEqual[i] = word[i]; + } + + return true; + } } +class Hint { + int ball, strike; + + private static final String BALL_WORD = "볼"; + private static final String STRIKE_WORD = "스트라이크"; + private static final String NOT_MATCH_WORD = "낫싱"; + + public String toString() { + return "ball: " + this.ball + ", strike: " + this.strike; + } + + private void addBallCount() { + this.ball++; + } + + private void addStrikeCount() { + this.strike++; + } + + void compareAnswer(Game answer, Game rightAnswer) { + int nowNumber; + + for (int i = 0; i < Game.NUMBER_COUNT; i++) { + nowNumber = answer.number[i]; + + if (!Array.checkArrayContains(rightAnswer.number, nowNumber)) { + continue; + } + if (i == Array.getIndexFromValue(rightAnswer.number, nowNumber)) { + addStrikeCount(); + continue; + } + + addBallCount(); + } + } + + void showResult() { + String result = ""; + if (this.ball != 0) { + result += this.ball + BALL_WORD; + } + + if (this.strike != 0) { + if (this.ball != 0) { + result += " "; + } + result += this.strike + STRIKE_WORD; + } + + if (result.equals("")) { + result = NOT_MATCH_WORD; + } + + System.out.println(result); + } +} \ No newline at end of file From dd6141b848dfc4446509868208253a82bec6e8b2 Mon Sep 17 00:00:00 2001 From: mutjin Date: Wed, 25 Oct 2023 23:19:52 +0900 Subject: [PATCH 4/7] 23-10-25 --- src/main/java/baseball/Application.java | 341 ++++++++---------------- 1 file changed, 105 insertions(+), 236 deletions(-) diff --git a/src/main/java/baseball/Application.java b/src/main/java/baseball/Application.java index 0b4a063ce..f23a4dfa5 100644 --- a/src/main/java/baseball/Application.java +++ b/src/main/java/baseball/Application.java @@ -1,239 +1,108 @@ -package baseball; - -import static camp.nextstep.edu.missionutils.Randoms.pickNumberInRange; -import static camp.nextstep.edu.missionutils.Console.readLine; +import java.util.Scanner; +import java.util.Random; public class Application { - public static void main(String[] args) { - Game rightAnswer = new Game(); - Game.init(rightAnswer); - } -} - -class Array { - static boolean checkArrayContains(final int[] arr, final int number) { - for (int value : arr) { - if (value == number) { - return true; - } - } - return false; - } - - static boolean checkArrayContains(final char[] arr, final char number) { - for (int value : arr) { - if (value == number) { - return true; - } - } - return false; - } - - static char[] getCharArrayFromString(String str) { - char[] charArray = new char[str.length()]; - - for (int i = 0; i < str.length(); i++) { - charArray[i] = str.charAt(i); - } - - return charArray; - } - - static int getIndexFromValue(final int[] arr, final int value) { - for (int i = 0; i < arr.length; i++) { - if (arr[i] == value) { - return i; - } - } - return -1; - } + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + while (true) { + playGame(scanner); + + System.out.println("게임을 다시 시작하려면 1, 종료하려면 2를 입력하세요: "); + int choice = scanner.nextInt(); + if (choice == 2) { + break; + } + } + + System.out.println("게임 종료. 감사합니다!"); + } + + private static void playGame(Scanner scanner) { + Random random = new Random(); + int[] computerNumbers = generateRandomNumbers(); + int[] userNumbers; + int attempts = 0; + + System.out.println("숫자 야구 게임을 시작합니다."); + + while (true) { + System.out.print("3자리 숫자를 입력하세요: "); + int input = scanner.nextInt(); + userNumbers = parseUserInput(input); + + if (!isValidInput(userNumbers)) { + System.out.println("잘못된 입력입니다. 1부터 9까지 서로 다른 수로 입력해주세요."); + continue; + } + + int[] result = compareNumbers(computerNumbers, userNumbers); + int strikes = result[0]; + int balls = result[1]; + + System.out.println(strikes + "스트라이크 " + balls + "볼"); + + if (strikes == 3) { + System.out.println("3개의 숫자를 모두 맞혔습니다. 축하합니다!"); + break; + } + + attempts++; + } + + System.out.println("게임 종료! 총 시도 횟수: " + attempts); + } + + private static int[] generateRandomNumbers() { + int[] numbers = new int[3]; + for (int i = 0; i < 3; i++) { + numbers[i] = (int) (Math.random() * 9) + 1; + for (int j = 0; j < i; j++) { + if (numbers[i] == numbers[j]) { + i--; + break; + } + } + } + return numbers; + } + + private static int[] parseUserInput(int input) { + int[] numbers = new int[3]; + numbers[2] = input % 10; + numbers[1] = (input / 10) % 10; + numbers[0] = input / 100; + return numbers; + } + + private static boolean isValidInput(int[] numbers) { + if (numbers[0] == 0 || numbers[0] == numbers[1] || numbers[0] == numbers[2] || numbers[1] == numbers[2]) { + return false; + } + return true; + } + + private static int[] compareNumbers(int[] computerNumbers, int[] userNumbers) { + int strikes = 0; + int balls = 0; + + for (int i = 0; i < 3; i++) { + if (computerNumbers[i] == userNumbers[i]) { + strikes++; + } else if (containsNumber(computerNumbers, userNumbers[i])) { + balls++; + } + } + + return new int[]{strikes, balls}; + } + + private static boolean containsNumber(int[] numbers, int target) { + for (int number : numbers) { + if (number == target) { + return true; + } + } + return false; + } } - -class Game { - private static final int START_RANGE = 1; - private static final int END_RANGE = 9; - static final int NUMBER_COUNT = 3; - private static final int NEW_GAME = 1; - private static final int QUIT_GAME = 2; - - private static final String GET_NUMBER_MESSAGE = "숫자를 입력해주세요 : "; - private static final String SUCCESS_MESSAGE = Game.NUMBER_COUNT + "개의 숫자를 모두 맞히셨습니다! 게임 종료"; - private static final String NEW_GAME_CHECK_MESSAGE = "게임을 새로 시작하려면 " + Game.NEW_GAME + ", 종료하려면 " + Game.QUIT_GAME + "를 입력하세요."; - - int[] number = new int[NUMBER_COUNT]; - - Game() { - int nowRandomNum; - int nowNumberIndex = 0; - - while (nowNumberIndex < NUMBER_COUNT) { - nowRandomNum = this.getRandomNumber(); - - if (!Array.checkArrayContains(number, nowRandomNum)) { - number[nowNumberIndex++] = nowRandomNum; - } - } - } - - Game(String str) { - for (int i = 0; i < Game.NUMBER_COUNT; i++) { - number[i] = Integer.parseInt(str.charAt(i) + ""); - } - } - - private int getRandomNumber() { - return pickNumberInRange(Game.START_RANGE, Game.END_RANGE); - } - - public static void init(Game rightAnswer) { - Game answer = Game.getAnswer(); - - Hint hint = new Hint(); - hint.compareAnswer(answer, rightAnswer); - hint.showResult(); - - if (hint.strike != Game.NUMBER_COUNT) { - Game.init(rightAnswer); - return; - } - - int newGameAnswer = Game.checkNewGameStart(); - if (newGameAnswer == Game.NEW_GAME) { - rightAnswer = new Game(); - Game.init(rightAnswer); - } - } - - private static Game getAnswer() { - System.out.print(GET_NUMBER_MESSAGE); - String userInput = readLine(); - Game.checkInputValue(userInput); - - return new Game(userInput); - } - - private static int checkNewGameStart() { - System.out.println(SUCCESS_MESSAGE); - System.out.println(NEW_GAME_CHECK_MESSAGE); - - String newGameAnswer = readLine(); - return Game.getNewGameAnswerNumber(newGameAnswer); - } - - private static int getNewGameAnswerNumber(String str) { - int intValue; - try { - intValue = Integer.parseInt(str); - } catch (NumberFormatException e) { - throw new IllegalArgumentException(); - } - - if (intValue != 1 && intValue != 2) { - throw new IllegalArgumentException(); - } - - return intValue; - } - - public String toString() { - return "number: " + this.number[0] + this.number[1] + this.number[2]; - } - - static void checkInputValue(final String str) { - if (!Game.checkInputLength(str)) { - throw new IllegalArgumentException(); - } - if (!Game.checkInputNumber(str)) { - throw new IllegalArgumentException(); - } - if (!Game.checkEqualNumber(str)) { - throw new IllegalArgumentException(); - } - } - - static boolean checkInputLength(final String str) { - return str.length() == Game.NUMBER_COUNT; - } - - static boolean checkInputNumber(String str) { - try { - int numberValue = Integer.parseInt(str); - } catch (NumberFormatException e) { - return false; - } - char[] numberArray = Array.getCharArrayFromString(str); - return !Array.checkArrayContains(numberArray, '0'); - } - - static boolean checkEqualNumber(String str) { - char[] checkEqual = new char[str.length()]; - char[] word = Array.getCharArrayFromString(str); - - for (int i = 0; i < str.length(); i++) { - if (Array.checkArrayContains(checkEqual, word[i])) { - return false; - } - checkEqual[i] = word[i]; - } - - return true; - } -} - -class Hint { - int ball, strike; - - private static final String BALL_WORD = "볼"; - private static final String STRIKE_WORD = "스트라이크"; - private static final String NOT_MATCH_WORD = "낫싱"; - - public String toString() { - return "ball: " + this.ball + ", strike: " + this.strike; - } - - private void addBallCount() { - this.ball++; - } - - private void addStrikeCount() { - this.strike++; - } - - void compareAnswer(Game answer, Game rightAnswer) { - int nowNumber; - - for (int i = 0; i < Game.NUMBER_COUNT; i++) { - nowNumber = answer.number[i]; - - if (!Array.checkArrayContains(rightAnswer.number, nowNumber)) { - continue; - } - if (i == Array.getIndexFromValue(rightAnswer.number, nowNumber)) { - addStrikeCount(); - continue; - } - - addBallCount(); - } - } - - void showResult() { - String result = ""; - if (this.ball != 0) { - result += this.ball + BALL_WORD; - } - - if (this.strike != 0) { - if (this.ball != 0) { - result += " "; - } - result += this.strike + STRIKE_WORD; - } - - if (result.equals("")) { - result = NOT_MATCH_WORD; - } - - System.out.println(result); - } -} \ No newline at end of file From 876f3a26d448276793365cc65fba21abdae7f942 Mon Sep 17 00:00:00 2001 From: mutjin Date: Wed, 25 Oct 2023 23:32:52 +0900 Subject: [PATCH 5/7] before api --- src/main/java/baseball/Application.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/baseball/Application.java b/src/main/java/baseball/Application.java index f23a4dfa5..deb72c265 100644 --- a/src/main/java/baseball/Application.java +++ b/src/main/java/baseball/Application.java @@ -1,5 +1,8 @@ -import java.util.Scanner; -import java.util.Random; +//api 사용 전 자바 기본 라이브러리 이용한 입력 +package baseball; + +import static camp.nextstep.edu.missionutils.Randoms.pickNumberInRange; +import static camp.nextstep.edu.missionutils.Console.readLine; public class Application { public static void main(String[] args) { From 68c16d37edcd66fba42e4f797e19f8d8a0a7133f Mon Sep 17 00:00:00 2001 From: mutjin Date: Wed, 25 Oct 2023 23:35:51 +0900 Subject: [PATCH 6/7] api used --- src/main/java/baseball/Application.java | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/main/java/baseball/Application.java b/src/main/java/baseball/Application.java index deb72c265..339ef96f2 100644 --- a/src/main/java/baseball/Application.java +++ b/src/main/java/baseball/Application.java @@ -1,18 +1,19 @@ -//api 사용 전 자바 기본 라이브러리 이용한 입력 package baseball; import static camp.nextstep.edu.missionutils.Randoms.pickNumberInRange; import static camp.nextstep.edu.missionutils.Console.readLine; +//import java.util.Scanner; +//import java.util.Random; + public class Application { public static void main(String[] args) { - Scanner scanner = new Scanner(System.in); while (true) { - playGame(scanner); + playGame(); System.out.println("게임을 다시 시작하려면 1, 종료하려면 2를 입력하세요: "); - int choice = scanner.nextInt(); + int choice = Integer.parseInt(readLine()); if (choice == 2) { break; } @@ -21,7 +22,7 @@ public static void main(String[] args) { System.out.println("게임 종료. 감사합니다!"); } - private static void playGame(Scanner scanner) { + private static void playGame() { Random random = new Random(); int[] computerNumbers = generateRandomNumbers(); int[] userNumbers; @@ -31,7 +32,7 @@ private static void playGame(Scanner scanner) { while (true) { System.out.print("3자리 숫자를 입력하세요: "); - int input = scanner.nextInt(); + int input = Integer.parseInt(readLine()); userNumbers = parseUserInput(input); if (!isValidInput(userNumbers)) { @@ -71,10 +72,11 @@ private static int[] generateRandomNumbers() { } private static int[] parseUserInput(int input) { - int[] numbers = new int[3]; - numbers[2] = input % 10; - numbers[1] = (input / 10) % 10; - numbers[0] = input / 100; + + int n = Randoms.pickNumberInRange(1, 9); + numbers[2] = n % 10; + numbers[1] = (n / 10) % 10; + numbers[0] = n / 100; return numbers; } From 028baf0952ab70ac82fb515d06e454eb37e108e8 Mon Sep 17 00:00:00 2001 From: mutjin Date: Wed, 25 Oct 2023 23:47:42 +0900 Subject: [PATCH 7/7] last commit --- src/main/java/baseball/Application.java | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/main/java/baseball/Application.java b/src/main/java/baseball/Application.java index 339ef96f2..abc977247 100644 --- a/src/main/java/baseball/Application.java +++ b/src/main/java/baseball/Application.java @@ -3,9 +3,6 @@ import static camp.nextstep.edu.missionutils.Randoms.pickNumberInRange; import static camp.nextstep.edu.missionutils.Console.readLine; -//import java.util.Scanner; -//import java.util.Random; - public class Application { public static void main(String[] args) { @@ -23,7 +20,6 @@ public static void main(String[] args) { } private static void playGame() { - Random random = new Random(); int[] computerNumbers = generateRandomNumbers(); int[] userNumbers; int attempts = 0; @@ -60,23 +56,23 @@ private static void playGame() { private static int[] generateRandomNumbers() { int[] numbers = new int[3]; for (int i = 0; i < 3; i++) { - numbers[i] = (int) (Math.random() * 9) + 1; + int n = pickNumberInRange(1, 9); for (int j = 0; j < i; j++) { - if (numbers[i] == numbers[j]) { + if (n == numbers[j]) { i--; break; } } + numbers[i] = n; } return numbers; } private static int[] parseUserInput(int input) { - - int n = Randoms.pickNumberInRange(1, 9); - numbers[2] = n % 10; - numbers[1] = (n / 10) % 10; - numbers[0] = n / 100; + int[] numbers = new int[3]; + numbers[2] = input % 10; + numbers[1] = (input / 10) % 10; + numbers[0] = input / 100; return numbers; } @@ -110,4 +106,4 @@ private static boolean containsNumber(int[] numbers, int target) { } return false; } -} +} \ No newline at end of file