개발하는 체대생

[코딩테스트] 타입, 증감연산자, Math.random(), 반복문 활용문제 본문

코딩테스트/JAVA

[코딩테스트] 타입, 증감연산자, Math.random(), 반복문 활용문제

개발하는체대생
        //문제1
        //출력 결과로 5를 기대했는데 4가 출력
        //어디가 잘못된 것일까??
        int var1=5;
        int var2=2;
        double var3=var1/var2;
        System.out.println(var3);
        int var4=(int)(var3*var2);
        System.out.println(var4);
        
        //정답 : var1과 var2의 타입을 double 로 바꿔주면 5가 나온다.
        //이유 :
        //int 타입을 바꾸지 않고 double var3=var1/var2; 이 구문을 출력하게 되면
        //var3의 값은 2.0 이 나오는데 그 이유가 var1/var2 구문에서 이미 둘 다 int 타입이라 2.5가 아니라 2라는 값이 도출되었고
        //2라는 값을 double 타입으로 변환하면 2.0이라는 값이 도출되기 때문에 최종값은 4가 나오게 된다.
        //따라서
        //var1과 var2의 타입을 처음부터 double 으로 선언하면 var1/var2의 값은 2.5가 출력되게 된다.
        //그래서 최종적으로 연산했을 때 5가 나올 수 있게된다.
        //문제2
        //다음 코드를 실행했을 때 출력 결과는 무엇입니까?
        int x=10;
        int y=20;
        int z = (++x) + (y--);
        System.out.println(z);
        //결과 :  31
        //이유 :
        //++가 변수 앞에 붙으면 연산을 수행하기 전에 증가를 시키기 때문에 ++x의 값은 11이 되고
        //--가 변수 뒤에 붙으면 연산을 수행하고 나서 감소를 시키기 때문에 --Y의 값은 20이 된다.
        //따라서
        // (11) + (20) 의 값은 31이 출력된다.
        //문제3
        //while문과 Math.random() 메소드를 이용해서 2개의 주사위를 던졌을 때 나오는 눈을 (눈1, 눈2) 형태로 출력하고,
        // 눈의 합이 5가 아니면 계속 주사위를 던지고,
        // 눈의 합이 5이면 실행을 멈추는 코드를 작성해보세요.
        // 눈의 합이 5가 되는 조합은 (1,4), (4,1), (2,3), (3,2)입니다.

        //case1
        while (true){
            int num1 = ((int)(Math.random() * 6)+1);
            int num2 = ((int)(Math.random() * 6)+1);
            //System.out.println(num1+num2);//Math.random() 함수 정상실행 확인
            if((num1+num2) == 5){
                System.out.println(num1 +"+"+ num2);//num1 값과 num2 값을 각각 확인
                break;
            }
        }

        //해설
        //먼저 while문이 작동할 수 있도록 true로 작성한다.
        //그 안에 1~6까지 랜덤 값을 뽑아주는 num1 과 num2 변수를 선언한다.
        //if문을 활용해 num1과 num2의 값이 5일 때 break;를 사용하여 while문을 종료한다.

 

Comments