📌 고찰
- 처음 player의 input 값을 int형으로 받을 경우 띄어서 입력했어야 했다.
- 235값을 받았을 때 {2, 3, 5} 같이 배열에 입력되기 위해 String으로 받아 Char로 형변환 후 Int형 변환
- 이번엔 아스키코드 입력을 막기 위해 intplayer[i] = player.charAt(i)-'0';
사용
- 형 변환을 위해 List를 사용하는 경우도 있는 것 같다.
package baseball;
import java.util.*;
public class baseball {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int[] number = new int[3];
int[] intplayer = new int[3];
int ball = 0;
int strike = 0;
int count = 1;
for (int i = 0; i < 3; i++) {
number[i] = (int) (Math.random() * 9) +1;
for (int j = 0; j < i; j++) {
if (number[i] == number[j]) {
i--;
break;
}
}
}
System.out.println("컴퓨터가 숫자를 생성하였습니다. 답을 맞춰보세요!");
while (true) {
System.out.println(count + "번째 시도:");
String player = scan.next();
for(int i=0; i<player.length(); i++){
intplayer[i] = player.charAt(i)-'0';
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (intplayer[i] == number[j] && i == j) {
strike++;
} else if(intplayer[i] == number[j] && i!=j) {
ball++;
}
}
}
if (strike == 3) {
System.out.println(count + "번만에 맞히셨습니다");
System.out.println("게임을 종료합니다");
break;
}
else{
count++;
System.out.println(ball + "B" + strike + "S");
ball = 0;
strike = 0;
}
}
}
}
실행결과 :