배열을 사용한 숫자야구게임
package c_statement;
import e_oop.ScanUtil;
public class Baseball_Array {
public static void main(String[] args) {
int[] number = new int[3];
boolean chk;
// 중복 없는 난수 3개 생성
for (int i = 0; i < number.length; i++) {
while (true) {
number[i] = (int) (Math.random() * 9) + 1;
chk = false;
// 중복 확인 : 나머지 난수들과 비교해서 중복이면 chk = true
for (int j = 0; j < i; j++) {
if (number[j] == number[i]) {
chk = true;
break;
}
}
// 중복이면 (chk = true) 다음 인덱스로 넘어가지 않는다.
// 중복이 아니면(chk = false) while문을 빠져나가고(break)
// 다음 인덱스로 넘어간다.
if (chk == false) {
break;
}
}
}
System.out.print("문제 출력 : ");
for (int i = 0; i < number.length; i++) {
System.out.print(number[i]);
if (i != number.length - 1) {
System.out.print(", ");
}
}
System.out.println();
int[] answer = new int[3];
int cnt = 0;
while (true) {
System.out.print("3자리 숫자 입력 : ");
int input = ScanUtil.nextInt();
// % 10 -> 맨 앞자리의 수를 가져온다. / 10 -> 다음 자리를 가져올 준비
// 앞자리부터 가져왔으므로 배열에 거꾸로 저장한다.
for (int i = answer.length - 1; i >= 0; i--) {
answer[i] = input % 10;
input /= 10;
}
int strike = 0;
int ball = 0;
int out = 0;
// 문제와 입력의 같은 자리가 일치 - strike
for (int i = 0; i < answer.length; i++) {
if (answer[i] == number[i]) {
strike++;
}
// 문제와 입력의 같은 자리가 다르고 다른 자리가 일치 - ball
for (int j = 0; j < answer.length; j++) {
if (answer[i] != number[i] && answer[j] == number[i]) {
ball++;
}
}
}
out = 3 - strike - ball;
System.out.println(++cnt + "차 시도 : " + strike + " strike " + ball + " ball " + out + " out");
if (strike == 3) {
System.out.println("정답입니다.");
break;
}
}
}
}
Author And Source
이 문제에 관하여(배열을 사용한 숫자야구게임), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@irisblossom/배열을-사용한-숫자야구게임-구현저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)