Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[경북대 BE_김은선] 미션 제출합니다. #141

Open
wants to merge 10 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 21 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,21 @@
# java-baseball-precourse
# java-baseball-precourse
<기능구현>
#1. 난수 생성
-서로 다른 정수 3개로 이루어진 난수 생성
#2. 사용자에게 3자리 숫자 입력받기
-중복된 수가 2개이상 들어가있을 경우 알려주고 다시 입력받기
-3자리보다 적거나 많은 수 입력 시 IllegalArgumentException 을 발생시킨 후 애플리케이션은 종료하기
#3. 입력된 숫자 체크하기
-스트라이크: 자리와 숫자가 모두 일치
-볼: 자리는 맞지않지만 숫자 일치
-입력할때마다 스트라이크, 볼의 수를 알려주기
-정답이 아닐 경우 계속 입력받기
-정답일 경우 1을 입력하면 새로운 게임 다시 시작하고 2를 입력하면 애플리케이션 종료하기

<class 종류>
#InputNumber.java: 사용자로부터 입력값을 받는 역할
#NumberGenerator.java: 정답을 생성하는 역할
#Check.java: 입력값에 대한 결과를 사용자에게 알려주고 그 다음 수행을 결정한다.
#Main.java: 시작클래스


Empty file added bin/main/.gitkeep
Empty file.
Binary file added bin/main/Check.class
Binary file not shown.
Binary file added bin/main/InputNumber.class
Binary file not shown.
Binary file added bin/main/Main.class
Binary file not shown.
Binary file added bin/main/NumberGenerator.class
Binary file not shown.
Empty file added bin/test/.gitkeep
Empty file.
25 changes: 25 additions & 0 deletions src/main/java/Check.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
public class Check {
public static boolean checkAnswer(int[] numArr, int[] inputArr) {
int strike = 0;
int ball = 0;

for (int i = 0; i < numArr.length; i++) {
for (int j = 0; j < inputArr.length; j++) {
if (numArr[i] == inputArr[j] && i == j) {
strike++;
} else if (numArr[i] == inputArr[j] && i != j) {
ball++;
}
}
}

if (strike == 3) {
System.out.println(strike + "스트라이크 " + ball + "볼");
System.out.println("3개의 숫자를 모두 맞히셨습니다! 게임 종료");
return true;
} else {System.out.println(strike + "스트라이크 " + ball + "볼");

return false;
}
}
}
39 changes: 39 additions & 0 deletions src/main/java/InputNumber.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import java.util.Scanner;

public class InputNumber {
public static int[] inputNum(int[] inputArr) {
boolean isDuplicate = false;
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.print("숫자를 입력해주세요 : ");
String input = scanner.next();

// 입력된 숫자가 세 자리가 아닌 경우 IllegalArgumentException 발생
if (input.length() != 3) {
throw new IllegalArgumentException("세 자리 숫자를 입력해주세요.");
}

// 중복 체크를 위한 배열
boolean[] digitExists = new boolean[10];
isDuplicate = false;

for (int i = 0; i < inputArr.length; i++) {
inputArr[i] = Character.getNumericValue(input.charAt(i));
int digit = inputArr[i];

// 중복된 숫자인지 확인
if (digitExists[digit]) {
System.out.println("중복된 값을 입력했습니다.");
isDuplicate = true;
break;
} else {
digitExists[digit] = true;
}
}
if (!isDuplicate) {
break;
}
}
return inputArr;
}
}
29 changes: 29 additions & 0 deletions src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int strike = 0;
int ball = 0;

int[] numArr = NumberGenerator.generateUniqueRandomNumbers(3);

Scanner scanner = new Scanner(System.in);
while (true) {
int[] inputArr = new int[3]; // 숫자를 저장할 배열

inputArr = InputNumber.inputNum(inputArr);
if (Check.checkAnswer(numArr, inputArr)) {
System.out.println("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요.");
int choice = scanner.nextInt();
if (choice == 1) {
numArr = NumberGenerator.generateUniqueRandomNumbers(3);
continue; // 게임 새로 시작
} else if (choice == 2) {
break; // 게임 종료
} else {
System.out.println("잘못된 입력입니다. 게임을 종료합니다.");
break;
}
}
}
}
}
19 changes: 19 additions & 0 deletions src/main/java/NumberGenerator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
public class NumberGenerator {
public static int[] generateUniqueRandomNumbers(int length) {
int[] numArr = new int[length];
boolean[] used = new boolean[10]; // 사용된 숫자를 추적하기 위한 배열

for (int i = 0; i < numArr.length; i++) {
int randomNumber;
do {
randomNumber = (int) (Math.random() * 9 + 1);
} while (used[randomNumber]); // 이미 사용된 숫자라면 다시 난수를 생성

numArr[i] = randomNumber;
used[randomNumber] = true;
}

return numArr;
}
}