이것이 자바다 3장 확인문제

  1. 연산자와 연산식에 대한 설명 중 틀린 것은 무엇입니까?
    ① 연산자는 피연산자의 수에 따라 단항, 이항, 삼항 연산자로 구분된다.
    ② 비교 연산자와 논리 연산자의 산출 타입은 boolean(true/false) 이다.
    ③ 연산식은 하나 이상의 값을 산출할 수도 있다.
    ④ 하나의 값이 올 수 있는 자리라면 연산식도 올 수 있다.

    1번 정답

    답 : ③

    연산식은 반드시 하나의 값을 산출한다.
    이것이 자바다 65p 참고


  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);
         }
     }
    
    2번 정답

    답 : 31

    11 + 20

    • (x++) : 다른 연산을 수행하지 전에 피연산자의 값 +1 적용
    • (y--) : 다른 연산을 수행한 후에 피연산자의 값 -1 적용
      11 + 20 연산 후에 y의 값은 19 가 된다.

    이것이 자바다 71p 참고


  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);
         }
     }
    
    3번 정답

    답 : 가

    • (score>90) == false
      score 의 값 85가 90보다 작기 때문에 false 가 산출된다.

    • !(score>90) == true
      논리부정 연산자 !(피연산자) 는 피연산자의 값을 반대로 산출한다.
      ex) true 값이면 false 출력

    • (!(score>90))? “가”:”나” == 가
      삼항연산자 는 (조건식) ? (값 또는 연산식1) : (값 또는 연산식2) 이다.
      조건식이 true 면 (값 또는 연산식1) 가 결과로 나오고
      조건식이 false 면 (값 또는 연산식2) 가 결과로 나온다.

    이것이 자바다 87p, 92p, 100p 참고


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

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

    답 :
    - ( #1 ) : pencils / students
    - ( #2 ) : pencils % students

    이것이 자바다 76p 참고


  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 );
         }
     }
    
    5번 정답

    답 :
    - ( #1 ) : value - (value % 300)

    이것이 자바다 76p 참고


  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);
         }
     }
    
    6번 정답

    답 :
    - ( #1 ) : (double)(lengthTop + lengthBottom) * height / 2

    이것이 자바다 78p 참고


  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) ); --------------(      )
         }
     }
    
    7번 정답

    답 :
    - (   ) : true
    - (   ) : false

    논리연산자
    - && : (AND) 피연산자 모두가 true 일 경우에만 연산 결과는 true
    - || : (OR) 피연산자 중 하나만 true 이면 연산 결과는 true
    이것이 자바다 92p 참고


  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);
             }
         }
     }
    
    8번 정답

    답 :
    ( #1 ) : Double.isNaN(z)

    / 또는 % 연산자를 사용 할 때 주의할 점
    좌측 피연산자가 정수 타입인 경우 나누는 수인 우측 피연산자는 0을 사용할 수 없다.
    만일 0으로 나누면 컴파일은 정상으로 되지만, 실행시 ArithmeticException(예외)이 발생한다.
    ex) 5 / 0.0 → Infinity
    ex) 5 % 0.0 → NaN

    연산의 결과가 Infinity 또는 NaN 인지 확인하려면
    Double.isInfinite() 와 Double.isNaN() 메소드를 이용해야 한다.

    연산의 결과가 Infinity 또는 NaN 이면 절대로 다음 연산을 수행하지 못하도록
    if 문을 사용해서 실행 흐름을 변경해야 한다.

    이것이 자바다 83p 참고


🌞 정보 : 공부 기록용 블로그입니다. 오타나 내용 오류가 있을 경우 알려주시면 감사하겠습니다.

댓글남기기