Daily coding

Java Basic : day 4 - Example 03 : boolean 배열을 이용한 중복값 처리 본문

Language/Java_basic

Java Basic : day 4 - Example 03 : boolean 배열을 이용한 중복값 처리

sunnnkim 2019. 11. 22. 18:38
package day4;

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class Ex03_Baseball_myCode {
public static void main(String[] args) {

	// 1. 초기화
	// 2. random
	///////////// loop //
	// 3. user input
	// 4. finding (비교)
	/////////////////////
	// 5. result

	Scanner sc = new Scanner(System.in);
	Random r = new Random();

	// 선언
	int[] rNum;
	int[] uNum;
	boolean clear;
	int strike, ball;
	boolean _switch[];
	
	while(true) {
	// 초기화
	rNum = new int[3];
	uNum = new int[3];
	_switch = new boolean[10];
	
	// _switch 에 모든 데이터를 꺼준다 
	for (int i = 0; i < _switch.length; i++) {
		_switch[i] = false;
	}
	clear = false;	// 게임을 성공하면 true로

	// random
	// 하드 코딩하지 않고 중복을 막는 방법
	// boolean 사용해서 들어온 값은 스위치에 false를 true 바꿔준다
	int ran;
	int w = 0;
	while (w < 3) {
		ran = r.nextInt(10);
		if (_switch[ran] == false) {
			_switch[ran] = true;
			rNum[w] = ran + 1;
			w++;
		}

	}
	System.out.println(Arrays.toString(rNum));

	w=0;
	while(w<10) {
	//user input
	ball = strike = 0;
	while(true) {
	for (int i = 0; i < uNum.length; i++) {
		System.out.print((i+1) + "번째 수 =");
		uNum[i] = sc.nextInt();
	}
	if(uNum[0] != uNum[1] 
			||uNum[0] != uNum[2] 
					||uNum[1] != uNum[2] ) {
		break;
	}
	System.out.println("잘못입력했습니다");
	
	}
	// ball
	for (int i = 0; i < rNum.length; i++) {
		for (int j = 0; j < rNum.length; j++) {
			if(rNum[i] == uNum[j] && i != j) {
				ball++;
			}
		}
	}
	//strike
	for (int i = 0; i < rNum.length; i++) {
		if(rNum[i] == uNum[i] ) {
			strike++;
		}
	}
	
	// 판정
	if(strike > 2) {
		clear = true;
		break;
	}

	
	
	//메세지
	System.out.println(strike + " strike, " + ball + " ball");
	w++;
	}
	
	if(clear) {
		System.out.println("Game Clear!");
		System.out.println((1+w)+ "회 만에 맞췄습니다.");
	}else {
		System.out.println("Game Over!");
	}
	System.out.print("다시하시겠습니까?(y/n) : ");
	String msg = sc.next();
	if(!msg.equalsIgnoreCase("y")) {
		break;
	}
}
}
}