실습 과제를 개인정리한 글입니다.
// - 사용자에게 가위, 바위, 보 중 한개를 입력하도록하고(입력방식은 숫자)
// - 컴퓨터가 랜덤값으로 세개중 하나의 데이터를 대입
// - 컴퓨터의 값과 사용자의 값을 비교하여 다음의 결과출력
// 같으면 비겼습니다. 출력 후 다시 사용자와 컴퓨터가 선택할 수 있도록 로직구성
// 컴퓨터가 사용자에게 이기면 컴퓨터가 이겼습니다. 출력
// 사용자가 컴퓨터에게 이기면 사용자가 이겼습니다. 출력
// - 승자가 나왔으면 다시 하사겠습니까 출력
// 다시하면 위에 로직 다시 실행
// 종료하면 프로그램 종료
// - 추가 : 만일 위 내용을 쉽게 처리 했으면 프로그램 종료시 지금까지 전적을 출력
public void practice00() {
int userInputNum = 0, comInputNum = 0, userWins = 0, comWins = 0;
boolean isExit = false;
while (!isExit) {
System.out.print("* 1(보), 2(가위), 3(바위) 중 하나를 골라 숫자를 입력하세요.: " );
userInputNum = sc.nextInt();
comInputNum = rd.nextInt(3) + 1;
System.out.println(userInputNum + ", " + comInputNum);
//1. 비겼을 때 (다시 플레이)
if (comInputNum == userInputNum) {
System.out.println("* 비겼습니다. 다시 플레이합니다.");
continue;
//* 공통: 승자가 나왔을 때 다시 하시겠습니까 출력 후 다시 할지 종료할지 받기
//2. 컴퓨터가 지고 유저가 이겼을 때
// 1 보 : 2 가위
// 2 가위 : 3 주먹
// 3 주먹 : 1 보
} else if ((comInputNum == 1 && userInputNum == 2)
|| (comInputNum == 2 && userInputNum == 3)
|| (comInputNum == 3 && userInputNum == 1)) {
userWins++;
System.out.print("* 유저가 이겼습니다. 다시 하시려면 0번, 종료하려면 9번을 입력하세요.: ");
userInputNum = sc.nextInt();
// *** 이거 계속 반복되어야하는데 어디로 빼서 어떻게 사용하지?
if (userInputNum == 0) {
System.out.println("* 다시 플레이합니다.");
continue;
} else if (userInputNum == 9) {
System.out.printf("* 종료합니다. 컴퓨터 승 %d번, 사용자 승 %d번", comWins, userWins);
isExit = true;
} else {
System.out.println("* 잘못된 입력입니다...");
System.out.printf("* 종료합니다. 컴퓨터 승 %d번, 사용자 승 %d번\n", comWins, userWins);
isExit = true;
}
//3. 유저가 지고 컴퓨터가 이겼을 때
} else if ((userInputNum == 1 && comInputNum == 2)
|| (userInputNum == 2 && comInputNum == 3)
|| (userInputNum == 3 && comInputNum == 1)){
comWins++;
System.out.print("* 컴퓨터가 이겼습니다. 다시 하시려면 0번, 종료하려면 9번을 입력하세요.: ");
userInputNum = sc.nextInt();
if (userInputNum == 0) {
System.out.println("* 다시 플레이합니다.");
continue;
} else if (userInputNum == 9) {
System.out.printf("* 종료합니다. 컴퓨터 승 %d번, 사용자 승 %d번\n", comWins, userWins);
isExit = true;
} else {
System.out.println("* 잘못된 입력입니다...");
System.out.printf("* 종료합니다. 컴퓨터 승 %d번, 사용자 승 %d번\n", comWins, userWins);
isExit = true;
}
} else {
System.out.println("* 잘못된 입력입니다. 가위바위보 첫 화면으로 돌아갑니다.");
}
}
정수 두 개와 연산자를 입력 받고 입력된 연산자에 따라 알맞은 결과를 출력하세요.
단, 해당 프로그램은 연산자 입력에 “exit”라는 값이 들어올 때까지 무한 반복하며
exit가 들어오면 “프로그램을 종료합니다.”를 출력하고 종료합니다.
또한 연산자가 나누기이면서 두 번째 정수가 0으로 들어오면
“0으로 나눌 수 없습니다. 다시 입력해주세요.”를 출력하며,
없는 연산자가 들어올 시 “없는 연산자입니다. 다시 입력해주세요.”라고 출력하고
두 경우 모두 처음으로 돌아가 사용자가 다시 연산자부터 입력하도록 하세요.
public void practice12(){
boolean isExit = false;
while (!isExit == true) {
System.out.print("* 연산자를 입력하세요(+, -, *, /, %): ");
String inputOperator = sc.next();
if (inputOperator.equals("exit")) {
System.out.println("* 프로그램을 종료합니다. ");
isExit = true;
break;
}
System.out.print("* 숫자 a를 입력하세요: ");
int inputNumA = sc.nextInt();
System.out.print("* 숫자 b를 입력하세요: ");
int inputNumB = sc.nextInt();
switch (inputOperator) {
case "+":
System.out.printf("%d %s %d = %d\n ", inputNumA, inputOperator, inputNumB, inputNumA + inputNumB);
break;
case "-":
System.out.printf("%d %s %d = %d\n ", inputNumA, inputOperator, inputNumB, inputNumA - inputNumB);
break;
case "*":
System.out.printf("%d %s %d = %d\n ", inputNumA, inputOperator, inputNumB, inputNumA * inputNumB);
break;
case "/":
if (inputNumB == 0) {
System.out.println("* 0으로 나눌 수 없습니다. 다시 입력해주세요. ");
continue;
}
System.out.printf("%d %s %d = %.2f\n ", inputNumA, inputOperator, inputNumB, (double)inputNumA / inputNumB);
break;
case "%":
if (inputNumB == 0) {
System.out.println("* 0으로 나머지를 구할 수 없습니다. 다시 입력해주세요. ");
continue;
}
System.out.printf("%d %s %d = %d\n", inputNumA, inputOperator, inputNumB, inputNumA % inputNumB);
break;
default:
System.out.println("* 없는 연산자입니다. 다시 입력해주세요. ");
continue;
}
}
}
// 사용자로부터 두 개의 값을 입력 받아 그 사이의 숫자를 모두 출력하세요.
// “1 이상의 숫자를 입력해주세요”가 출력되면서 다시 사용자가 값을 입력하도록 하세요.
public void practice07(){
while (true) {
System.out.print("* 첫번째 숫자를 입력하세요: ");
int inputNumA = sc.nextInt();
if (inputNumA < 1) {
System.out.println("* 1 이상의 숫자를 입력하세요");
continue;
}
System.out.print("* 첫번째 숫자보다 큰 두번째 숫자를 입력하세요: ");
int inputNumB = sc.nextInt();
if (inputNumA >= 1 && inputNumB >= 1) {
if (inputNumA >= inputNumB) {
System.out.println("*경고: 두번째 숫자를 더 큰 숫자로 입력하세요");
} else if (inputNumA < inputNumB) {
for (;inputNumA <= inputNumB; inputNumA++) {
System.out.print(inputNumA + " ");
}
break;
}
} else {
System.out.println("* 1 이상의 숫자를 입력하세요");
}
}
}
