Scanner scanner = new Scanner(System.in);
System.out.println("======[GAME START]======");
int userChoice, randomNum;
int errorCount = 0, gameCount = 1;
int win = 0, draw = 0, lose = 0;
double odds;
String user, computer;
while(true) {
randomNum = (int)(Math.random()*3)+1;
if(errorCount == 5) {
System.out.println("error!! 프로그램을 종료합니다.");
return;
} // if
System.out.println("가위, 바위 보 중 번호로 선택하세요.");
System.out.println("1. 가위 2. 바위 3. 보");
System.out.println(">");
userChoice = scanner.nextInt();
if(userChoice == 1) {
user = "가위";
} else if(userChoice == 2) {
user = "바위";
} else if(userChoice == 3) {
user = "보";
} else {
System.out.println("1 ~ 3 안에서 선택해주세요.");
errorCount++;
continue;
} // else
if(randomNum == 1) {
computer = "가위";
} else if(randomNum == 2) {
computer = "바위";
} else if(randomNum == 3) {
computer = "보";
} else {
System.out.println("system error");
continue;
} // else
errorCount = 0;
String result = battle(userChoice, randomNum);
if(result.equals("win")) {
win++;
} else if(result.equals("draw")) {
draw++;
} else if(result.equals("lose")) {
lose++;
} else {
System.out.println("error");
} // else
System.out.println("==== [결과 : "+ result + "] ====");
System.out.println("user : " + user + " computer : " + computer);
System.out.println("게임을 계속 하시겠습니까 ? [ Y / N ]");
System.out.println(">");
String yseNo = scanner.next();
if(yseNo.equalsIgnoreCase("Y")) {
gameCount++;
} else {
odds = (double)(win) / (double)(gameCount) * 100;
System.out.println("==== 최종결과 ====");
System.out.println("게임수 : " + gameCount);
System.out.printf("승 : %d 패 : %d 무 : %d 승률 : %.2f", win, lose, draw, odds);
break;
} // else
} // while
scanner.close();
} // main
static String battle(int user, int computer) {
String result = null;
if(user > 0 && user <= 3) {
if((user == 1 && computer == 3) || (user == 2 && computer == 1) || (user == 3 && computer == 2)) {
result = "win";
} else if(user == computer) {
result = "draw";
} else {
result = "lose";
} // else
} // if
return result;
} // battle
main 메서드 안에서 모든 코드를 처리하지않고
승, 패, 무 를 따로 계산해주는 battle 이란 메서드를 하나 더 생성 해주었습니다~
위 코드가 실행되는 line 에 battle() 의 코드를 그대로 붙여도 결과에는 상관 없습니다.
쉬운 코드라 설명은 따로 안해도 될듯 합니다..?!!