카테고리 없음

항해 자바 기초 풀이 과제

미노킴 2022. 11. 18. 11:57

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

int var1=5;
int var2=2;

//여기서 var1/var2가 int끼리의 계산으로 이루어지고, 그 후 그 결과값이 double로 강제 변환된다. 
//int끼리 /를 하면 나머지를 버리기 때문에 var3는 2.5가 아닌 2.0이 된다.
double var3=var1/var2;

int var4=(int)(var3*var2);
System.out.println(var4);

2. 다음 코드를 실행했을 때 출력 결과는 무엇입니까? (증감연산자에 대해 알아보세요!)

int x=10;
int y=20;

//앞에 붙는 증감 연산자는 연산 수행 전에 피연산자의 값을 변화시킴.
//뒤에 붙는 증감 연산자는 연산 수행 후에 피연산자의 값을 변화시킴.
int z = (++x) + (y--);
System.out.println(z); //31, int z = 11 + 20

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

public class test {
    public static void main(String[] args) {
        //주사위 눈 초기화
        int a = (int)(Math.random()*6) +1;;
        int b = (int)(Math.random()*6) +1;;
        
        //시작과 첫 주사위 출력.
        System.out.println("시작!");
        System.out.println("(" + a + "," + b + ")");
        
        //주사위 굴리기, 합이 5가 아니면 다시 굴리기
        while(a+b!=5){
            a = (int)(Math.random()*6) +1;
            b = (int)(Math.random()*6) +1;
            System.out.println("(" + a + "," + b + ")");
        }
        System.out.println("끝!");

    }
}