ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 이것이 자바다 확인문제 (3장 연산자)
    JAVA 2018. 10. 15. 19:37

    1. 연산자와 연산식에 대한 설명 중 틀린 것은 무엇입니까?

    1) 연산자는 피연산자의 수에 따라 단항, 이항, 삼항 연산자로 구분된다.

    2) 비교 연산자와 논리 연산자의 산출 타입은 boolean(true/false)이다.

    3) 연산식은 하나 이상의 값을 산출할 수도 있다.

    4) 하나의 값이올 수 있는 자리라면 연산식도 올 수 있다.


    답: 3)


    연산식은 반드시 하나의 값을 산출한다. 연산자 수가 아무리 많아도 두 개 이상의 값을 산출하는 연산식은 없다.(p.65)




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

    1
    2
    3
    4
    5
    6
    7
    8
    public class Exercise02 {
        public static void main(String[] args) {
            int x = 10;
            int y = 20;
            int z = (++x) + (y--);
            System.out.println(z);
        }
    }
    cs

    답: 31


    p.70

    ++피연산자 : 다른 연산을 수행하기전에 피연산자의 값을 1 증가시킴

    -- 피연산자 : 다른 연산을 수행하기 전에 피연산자의 값을 1 감소시킴

    피연산자++ : 다른 연산을 수행한 후에 피연산자의 값을 1 증가시킴

    피연산자-- : 다른 연산을 수행한 후에 피연산자의 값을 1 감소시킴


    => line5 : (10+1) + 20




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

    1
    2
    3
    4
    5
    6
    7
    public class Exercise03 {
        public static void main(String[] args) {
            int score = 85;
            String result = (!(score>90)) ? "가" : "나";
            System.out.println(result);
        }
    }
    cs

    답: 가


    p.73

    논리 부정 연산자 (!)

    !피연산자 : 피연산자가 true이면 false 값 산출. 피연산자가 false이면 true 값 산출


    p.100

    삼항 연산자

    조건식(피연산자1) ? 피연산자2 : 피연산자3

    조건식이 true : 연산 결과는 피연산자2

    조건식이 false : 연산 결과는 피연산자3


    => line4

    score>90 == false 

    !(score>90) == true





    4. 534자루의 연필을 30명의 학생들에게 똑같은 개수로 나누어 줄 때 학생당 몇 개를 가질 수 있고, 최종적으로 몇 개가 남는지를 구하는 코드입니다. ( #1 )과 ( #2 )에 들어갈 알맞은 코드를 작성하세요.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class Exercise04 {
        public static void main(String[] args) {
            int pencils = 534;
            int students = 30;
     
            // 학생 한 명이 가지는 연필 수
            int pencilsPerStudent = (  #1  );
            System.out.println(pencilsPerStudent);
            
            // 남은 연필 수
            int pencilsLeft = (  #2  );
            System.out.println(pencilsLeft);
        }
    }
    cs



    #1 : pencils / students

    #2 : pencils % students




    5. 다음은 십의 자리 이하를 버리는 코드입니다. 변수 value의 값이 356이라면 300이 나올 수 있도록 ( #1 )에 알맞은 코드를 작성하세요(산술 연산자만 사용하세요).

    1
    2
    3
    4
    5
    6
    public class Exercise05 {
        public static void main(String[] args) {
            int value = 356;
            System.out.println(  #1  );
        }
    }
    cs


    답: value - (value % 300)




    6. 다음 코드는 사다리꼴의 넓이를 구하는 코드입니다. 정확히 소수자릿수가 나올 수 있도록 ( #1 )에 알맞은 코드를 작성하세요.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Exercise06 {
        public static void main(String[] args) {
            int lengthTop = 5;
            int lengthBottom = 10;
            int height = 7;
            double area = (  #1  );
            System.out.println(area);
        }
    }
    cs


    답: ((double) lengthTop + lengthBottom) / 2 * 7

    * 52.5


    정확한 소수자릿수까지 산출 결과로 얻고 싶다면 피연산자 중 최소한 하나는 실수 타입이어야 한다. 따라서 1.0을 곱하여 실수 타입으로 만든 후 산술 연산을 하거나 하나의 피연산자를 double 타입으로 강제 타입 변환한 후 산술 연산을 실행한다. (p.77~78)



    7. 다음 코드는 비교 연산자와 논리 연산자의 복합 연산식입니다. 연산식의 출력 결과를 괄호( ) 속에 넣으세요.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Exercise07 {
        public static void main(String[] args) {
            int x = 10;
            int y = 5;
     
            System.out.println( (x>7&& (y<=5) );                (    )
            System.out.println( (x%3 == 2|| (y%2 != 1) );        (    )
        }
    }
    cs


    답: true, false


    p.92

    논리연산자

    && : 피연산자 모두가 true일 경우에만 연산 결과는 true

    || : 피연산자 중 하나만 true이면 연산 결과는 true


    line6 : (x>7) == true, (y<=5)== true

    line7 : (x%3 == 2) == false, (y%2 != 1) == false




    8.  다음은 %연산을 수행한 결과값에 10을 더하는 코드입니다. NaN값을 검사해서 올바른 결과가 출력될 수 있도록 ( #1 )에 들어갈 NaN을 검사하는 코드를 작성하세요.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public class Exercise08 {
        public static void main(String[] args) {
            double x = 5.0;
            double y = 0.0;
        
            double z = x % y;
     
            if(  #1  ) {
                System.out.println("0.0으로 나눌 수 없습니다.");
            } else {
                double result = z + 10;
                System.out.println("결과: " + result);
            }
        }
    }
    cs


    답: Double.isNaN(z)


    좌측피연산자가 정수 타입인 경우 나누는 수인 우측 피연산자는 0을 사용할 수 없다. 만일 0으로 나누면 컴파일은 정상적으로 되지만 실행 시 ArithmeticException이 발생한다.

    실수 타입인 0.0 또는 0.0f로 나누면 ArithmeticException이 발생하지 않고, / 연산의 결과는 Infinity 값을 가지며, % 연산의 결과는 NaN(Not a Number)을 가진다. 

    프로그램 코드에서 /와 % 연산의 결과가 Infinity 또는 NaN인지 확인하려면 Double.isInfinite() 와 Double.isNaN() 메소드를 이용하면 된다. 이 메소드들은 double 타입의 값을 매개값으로 받아서 이 값이 Infinity 또는 NaN이라면 true를 리턴하고, 그렇지 않다면 false를 리턴한다. (p.83~84)

Designed by Tistory.