본문 바로가기
java/과제

Java 과제

by 일상코더 2022. 9. 23.

1. 출력 결과를 5로 기대했는데 4가 출력된 이유

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

        int var1 = 5;
        int var2 = 2;
//자바 연산 에서 일반적인 계산과 달리 분수/소수 계산을 하지 않고 몫에 해당하는 값만 반환함
        double var3 = var1/var2;	// 값은 2.0
// var3 = 2.0, var2 = 2 -> 2.0 * 2 = 4.0 -> 형변환(casting) -> (int)(4.0) = 4        
        int var4 = (int)(var3*var2);  //값은 4  
        System.out.println(var4); // 4가 출력
    }
}

 

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

public class Exam02 {

    public static void main(String[] args){

       int x = 10;
       int y = 20;
//증감연산자가 앞에있으면 증감연산을 먼저 수행하고 그 값으로 다시 연산(전위 연산)
//증감연산자가 뒤에있으면 변수에 기존값으로 연산후 마지막에 증감연산 수행(후위 연산)
       int z = (++x) + (y--); //z = x(11) + y(20)
        System.out.println(z); // z = 31
        System.out.println(y); // y = 19
    }
}

/*  기존에 증감연산자의 개념을 알고있어서
	()로 묶여 있으니까 y--가 = 연산자보다 먼저 될 것 같았다.
    하지만 이 줄의 연산에서 y-1를 모든 연산이 끝나고 난 뒤에 가장 꼴찌로 한다.
    기존에 수학적으로 생각하기 보단 언어의 일관성을 유지하기 위해서 
    그냥 java를 만든사람이 그렇게 하기로 약속한것이라고 생각하면 될것 같다고 정리했다.  
    
    *후위연산자는 괄호 연산자마저 가장 나중으로 미루어버린다 *
 */

3. while문과 Math.random() 메소드를 이용해서 2개의 주사위를 던졌을 때 나오는 눈을 (눈1, 눈2) 형태로 출력하고,

눈의 합이 5가 아니면 계속 주사위를 던지고, 눈의 합이 5이면 실행을 멈추는 코드를 작성해보세요.

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

        System.out.println("시작!");
        while(true){
            //Math.random() ->0.xxx~0.9xxx
            //6을 곱했을때 가장 작은수는 0, 가장 큰수는 5기때문에 1을 더해주면 1~6사이의정수가 됨
            int num1 = (int)(Math.random()*6) + 1;  
            int num2 = (int)(Math.random()*6) + 1;	
            System.out.println((num1+ "," + num2));
            if(num1 + num2 == 5){
                break;
            }
        }
        System.out.println("종료!");
    }

}

 

'java > 과제' 카테고리의 다른 글

스프링 입문 주차 과제1  (0) 2022.10.13

댓글