본문 바로가기

오답노트/Java

반복문 false 처리 생각하기_주사위 예제

▶조건문

반복 조건이 true이면 반복을 계속하고, false이면 반복 종료한다.

반복 종료할 때도 종료를 나타내는 코드가 있어야한다.

 

▶while문과 Math.random()메소드를 이용해서 두 개의 주사위를 던졌을 때 나오는 눈을 (눈1, 눈2) 형태로 출력하고, 눈의 합이 5가 아니면 계속 주사위를 던지고, 눈의 합이 5이면 실행을 멈추는 코드를 작성하는 예시

 

   ★코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Practice {
    public static void main(String[] args) {
        
        int num1 = 0, num2 = 0;
    
 
        while (true) {
            
            num1 = (int)(Math.random()*6)+1;
            num2 = (int)(Math.random()*6)+1;
            
            if(num1 + num2 == 5break;
            else continue;
        
    }
        System.out.println(num1+","+ num2);
                    
}
}
cs

 

   결과

 

   이유

System.out.println(num1+","+ num2)를 반복문 밖에 한번만 써준 것이 틀린점

여기서 발생되는 문제는 컴퓨터가 계산하는 과정을 볼 수 없다는 것이다.

상기 코드로 실행하면 콘솔에는 계속 2,3같은 합하면 5가되는 수만 콘솔에 출력되는데 System.out.println(num1+","+ num2)를 반복문 밖에 하나만 써서 컴퓨터는 혼자 랜덤으로 무한 반복 하다가 2가지 수가 5가 되었을 때만 콘솔에 출력시키는 것이다. 문제해결을 위해 if (num1 + num2 == 5)와 else뒤에 ( System.out.println(num1+","+ num2) 를 사용해준다.

 

-. 출력이 생각처럼 안되었을 때 어떤 부분이 생각과 다른지 구체적으로 적어보기

-. 내가 콘솔에 출력시킬것이 무엇인지 명확하게 생각하고 적절한 위치에 코드를 넣는 연습하기

 

**math.random()

-. (int) (math.random() * 최댓값) + 최솟값

-. math.random은 기본적으로 double타입의 값을 가지기에 정수출력을 위해선 int형으로의 형변환이 필요함: (int)math.random()로 출력

 

'오답노트 > Java' 카테고리의 다른 글

배열 연습문제  (0) 2022.03.11
메서드 연습문제  (0) 2022.03.11
연산자 연습문제  (0) 2022.03.07
변수 연습문제  (0) 2022.03.04
for 조건문 사용 중 System.out.println 위치_3의 배수 총 합 예제  (0) 2022.03.01