Java 과제

김예진·2022년 11월 18일
0

java

목록 보기
11/21

문제1) 다음 코드를 실행하면 출력 결과로 5를 기대했는데 4가 출력되었습니다 어디에서 잘못 작성된 것일까요?

int var1=5;
int var2=2;
double var3=var1/var2;
int var4=(int)(var3*var2);
System.out.println(var4);

int형 변수는 저장시 소숫점 아래가 사라진다 따라서 위코드는 이렇게 실행된다

출력 결과로 5가 나오게 하고 싶다면 이렇게 하면 된다

문제2) 다음 코드를 실행했을 때 출력 결과는 무엇입니까?

int x=10;
int y=20;
int z = (++x) + (y--);
System.out.println(z);

전위(++x)(--x) : 1 증가,감소된 값이 연산값
후위(x++)(x--) : 1 증가,감소되기 전이 연산값

x는 전위증감연산자여서 1 증가된 값이 연산값이지만 y는 연산후에 1 감소되기 때문에 출력 결과는 31이다

문제3) while문과 Math.random() 메소드를 이용해서 2개의 주사위를 던졌을 때 나오는 눈을 (눈1, 눈2) 형태로 출력하고, 눈의 합이 5가 아니면 계속 주사위를 던지고, 눈의 합이 5이면 실행을 멈추는 코드를 작성해보세요. 눈의 합이 5가 되는 조합은 (1,4), (4,1), (2,3), (3,2)입니다.

public class check4_2_3 {
    public static void main(String[] args){

        System.out.println("시작!");
        while(true){
            int num1 = (int) (Math.random() * 6) + 1;
            int num2 = (int) (Math.random() * 5) + 1;

            int sum = num1+num2;

            if(sum == 5){
                System.out.println("("+num1+","+num2+")");
                break;
            }
            System.out.println("("+num1+","+num2+")");
        }
        System.out.println("끝!");
    }
}

0개의 댓글