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이하일 때까지 반복한다.
'JAVA' 카테고리의 다른 글
0309 JAVA - 배열(Array) (0) | 2020.03.09 |
---|---|
0309 JAVA - while문, while문 for문 비교, do while문 (0) | 2020.03.09 |
0306 JAVA - 캘린더만들기(for문, if문 사용) (0) | 2020.03.08 |
0305 JAVA - 반복문(for문, for문 if문 조합 ) (1) | 2020.03.05 |
0305 JAVA - 계산기 예제 실습(switch문, if문), switch문을 if문으로 변환 (0) | 2020.03.05 |