우리가 흔히 아는 숫자 야구 게임을 자바로 구현해 본 것이다.
생각보다 난도가 그렇게 높지 않아서 바로 만들 수 있었다.
주의해야 할 점은
100의자리 수와 10의 자리 수, 1의 자리 수가 중복되지 않게 만들어져야 하며
ball과 strike가 매 입력마다 새롭게 0으로 초기화돼서 비교돼야 한다는 점이다.
그리고 정답일 때와 9번의 시도 끝에 실패했을 경우 무슨 말을 넣을지도 고민해봐야 한다.!!


import java.util.Random;
import java.util.Scanner;
public class NumberBaseball {
public static void main(String[] args) {
// 3자리 정수 100의자리, 10의자리, 1의자리 별로 선언 (중복x)
Random rnd =new Random();
int com100, com10, com1;
do {
com100 = rnd.nextInt(10);
com10 = rnd.nextInt(10);
com1 = rnd.nextInt(10);
}
while( com100 == com10 || com100 == com1 || com10 == com1);
// 3자리 수 입력 받기
Scanner scan = new Scanner(System.in);
int userNumber, num100, num10, num1;
for(int i =0; i<9;i++) {
System.out.println("["+(i+1)+"회]");
System.out.print("중복되지 않는 3자리 숫자 입력 : ");
userNumber = scan.nextInt();
num100 = userNumber / 100;
num10 = userNumber /10 % 10;
num1 = userNumber % 10;
// ball, strike 구별
int ball =0, strike = 0;
//100의 자리
if (num100 == com100) strike++;
else if (num100 == com10) ball++;
else if(num100 == com1) ball++;
//10의 자리
if (num10 == com100) ball++;
else if (num10 == com10) strike++;
else if(num10 == com1) ball++;
//1의 자리
if (num1 == com100) ball++;
else if (num1 == com10) ball++;
else if(num1 == com1) strike++;
//정답과 아닐 시 구분
if (strike ==3 ) {
System.out.println("정답입니다. 와~~!");
break;
}
else System.out.println(strike + "S " + ball + "B");
if (i==8 && strike != 3) System.out.println("You loser~~~");
}
}
}

'# 개발 > Java' 카테고리의 다른 글
Java #4 - 배열 객체 Array, for each문 (국비16일차) (0) | 2023.01.20 |
---|---|
Java #3 - String 객체 (국비15일차) (1) | 2023.01.19 |
Java 연습문제 #2 - console 입력 (국비14일차) (0) | 2023.01.18 |
Java #2 - 키보드 입력, Scanner, 연산자, 제어문, 반복문 (국비14일차) (2) | 2023.01.18 |
Java 연습문제 #1 (국비13일차) (0) | 2023.01.17 |