배열을 사용한 숫자야구게임

1775 단어 자바자바

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;
		}
	}

}

}

좋은 웹페이지 즐겨찾기