import java.util.Random;
import java.util.Scanner;

public class Upndown {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		
		Random rand = new Random();
		int num = rand.nextInt(100);//0~99 중에서 랜덤으로 선언됨
		num++; //1~100까지의 값을 사용하고 싶으므로 num에 1을 더해줌
		
        System.out.println("입력해주세요.");
		int i = scan.nextInt();
		System.out.printf("입력 > %d%n", i);
        
		
		for(int j = 1; j < 10; j++) {//최대 10번까지 가능하므로 for문을 실행시킬 변수 j 선언해줌
            if(i != num) {//scan 입력한 값과 랜덤 num이 다를 경우
                if(num > i) {//입력한 값이 작을 경우
                    System.out.println("UP!");
                    i = scan.nextInt();//UP! 출력과 scan 값을 다시 입력 받음
                    System.out.printf("입력 > %d%n", i);
                }
                else if(num < i) {//입력한 값이 클 경우
                    System.out.println("DOWN!");
                    i = scan.nextInt();//DOWN! 출력과 scan 값을 다시 입력 받음
                    System.out.printf("입력 > %d%n", i);
                }
                if(j == 9) {//j의 최대값
                    System.out.printf("실패! 정답 %d%n", num);
                }
			}
            else if(i == num){//scan 입력 값이 랜덤 num과 동일한 경우
                System.out.printf("시도 횟수 %d번 성공!", j);	//시도횟수를 알려주기 위해 변수 j 사용
                break;
                }	
		}	
	}
}

-유의사항

1. 처음에는 시도 횟수를 확인해 주기 위해서 cnt 변수를 추가하려고 했다. 하지만 for문에서 사용하는 j 변수도 계속 증가하기 때문에 결국 시도 횟수와 동일하다. 그러므로 j 변수를 사용하면 되므로 굳이 cnt 변수를 추가할 필요가 없다. 

 

2. 10번 시도했을 때 "실패! 정답 num" 출력하는 if문에서 j == 9인 이유

    1) for문에서 조건식이 j < 10이기때문에 9까지만 for문이 돌기 때문에 j 는 10 이상이 될 수 없다.

    2) i 값을 10번 scan 받는데 9까지인 이유는 제일 먼저 scan 받는 건 for문이 시작되기 전에 입력받기 때문이다.

       for문 시작 전의 1번과 for문 안에서의 9번을 합하면 총 10번 도전하게된다.

 

- 수업시간에 한 코드

import java.util.*;

public class UpAndDown {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		Random rand = new Random();
		
		
        boolean success = false;
		
		int num = rand.nextInt(100) + 1;
		
		int inNum = 0;
		
		for(int i = 1; i <= 10; i++) {
			System.out.print("입력 > ");
			inNum = scan.nextInt();
			
			if(num == inNum) {
				System.out.printf("시도 횟수 [%d]번 성공", i);
				success = true;
				break;
			}else if(num > inNum) {
				System.out.println("UP!");
			}else if(num < inNum) {
				System.out.println("DOWN!");
			}
			
		}
		if(success == false) {
			System.out.println("실패! 정답" + num);			
		}
	}//main 끝

}//클래스 끝

boolean으로 success 값을 주어 성공과 실패를 판단한다.
scan 입력 값을 for문 안에서부터 받기 때문에 1부터 시작해서 10이하일 때까지 반복한다.

+ Recent posts