< 조건 >
- 사용자 값은 키보드로 입력받는다.
- 입력 받은 값이 올바른지 확인한다.
- 5회 이상 잘못 입력할 경우, 프로그램을 종료한다.
- 컴퓨터 값은 랜덤하게 받는다.
- 사용자와 컴퓨터의 값을 출력하고, 게임의 결과도 출력한다.
- 게임의 결과가 출력된 후, 게임 추가 진행 여부를 확인한다.
import java.util.Scanner;
public class Ex03 {
public static void main(String[] args) {
int com=0, user=0;
try (Scanner scanner = new Scanner(System.in)) {
boolean flag = false;
do {
String regex = "[1-3]"; // 1~3 값인가
int failCount = 0; // 입력 실패 횟수
// 사용자 값 입력받기
do {
System.out.print("> user 가위(1),바위(2),보(3) 선택 ? ");
String userInput = scanner.next();
// 입력값 유효성 확인
if( userInput.matches(regex) ) {
user = Integer.parseInt(userInput);
flag = false;
}
else {
failCount++;
System.out.printf("< [알림] %d회 입력이 잘못되었습니다. 1~3 중 하나 입력하세요.\n\n",failCount);
if (failCount>=5) {
System.out.println("프로그램 종료 : 5회 이상 잘못 입력");
return; //프로그램 종료
//System.exit(int status) // int status는 프로세스가 종료하면서 넘겨주는 값임
} //if
flag = true;
}
} while (flag);
// 컴퓨터 값 1~3 랜덤
com = (int) (Math.random() * 3) + 1;
// 컴퓨터와 user의 값 출력
String[] rsp = {null, "가위", "바위", "보"};
System.out.printf("> 컴퓨터: %s user: %s\n", rsp[com], rsp[user]);
// 게임 결과 출력
switch (user - com) {
case 1: case -2:
System.out.println("사용자 승리");
break;
case 2: case -1:
System.out.println("컴퓨터 승리");
break;
default:
System.out.println("무승부");
break;
} // switch
// y, Y 입력시 게임 재실행
System.out.print("\n> 다시 게임을 실행하겠습니까? ");
char reInput = scanner.next().charAt(0);
if ( Character.toUpperCase(reInput) == 'Y' ) flag = true;
else {
System.out.println("> end");
flag = false;
}
} while (flag);
} catch (Exception e) {
e.printStackTrace();
} // try-catch
} //main
} //class
<출력결과>
> user 가위(1),바위(2),보(3) 선택 ? !
< [알림] 1회 입력이 잘못되었습니다. 1~3 중 하나 입력하세요.
> user 가위(1),바위(2),보(3) 선택 ? one
< [알림] 2회 입력이 잘못되었습니다. 1~3 중 하나 입력하세요.
> user 가위(1),바위(2),보(3) 선택 ? rock
< [알림] 3회 입력이 잘못되었습니다. 1~3 중 하나 입력하세요.
> user 가위(1),바위(2),보(3) 선택 ? 580
< [알림] 4회 입력이 잘못되었습니다. 1~3 중 하나 입력하세요.
> user 가위(1),바위(2),보(3) 선택 ? 2
> 컴퓨터: 바위 user: 바위
무승부
> 다시 게임을 실행하겠습니까? y
> user 가위(1),바위(2),보(3) 선택 ? ye
< [알림] 1회 입력이 잘못되었습니다. 1~3 중 하나 입력하세요.
> user 가위(1),바위(2),보(3) 선택 ? 3
> 컴퓨터: 가위 user: 보
컴퓨터 승리
> 다시 게임을 실행하겠습니까? n
> end'Back-End > Java' 카테고리의 다른 글
| [ JAVA ] char과 String의 대소문자 변경 (0) | 2023.07.23 |
|---|---|
| [ JAVA ] 이름 붙은 반복문 (0) | 2023.07.23 |
| [ JAVA ] 별 출력하기 (삼격형, 마름모, 모래시계 등) (0) | 2023.07.23 |
| [ JAVA ] 구구단 출력하기 (0) | 2023.07.23 |
| [ JAVA ] 정규표현식 (0) | 2023.07.21 |