본문 바로가기
개념

[이것이 자바다] chapter.5 확인 문제

by cook_code 2023. 1. 20.
반응형

1. 참조 타입에 대한 설명으로 틀린 것은 무엇입니까?

  1. 참조 타입에는 배열, 열거, 클래스, 인터페이스가 있다. 
  2. 참조 타입 변수의 메모리 생성 위치는 스택이다. 
  3. 참조 타입에서 ==, != 연산자는 객체 번지를 비교한다. 
  4. 참조 타입은 null값으로 초기화할 수 없다.  

2. 자바에서 메모리 사용에 대한 설명으로 틀린 것은 무엇입니까?

  1. 로컬 변수는 스택 영역에 생성되며 실행 블록이 끝나면 소멸된다. 
  2. 메소드 코드나 상수, 열거 상수는 정적(메소드) 영역에 생성된다. 
  3. 참조되지 않는 객체는 프로그램에서 직접 소멸 코드를 작성하는 것이 좋다. 
  4. 배열 및 객체는 힙 영역에 생성된다.

3. String 타입에 대한 설명으로 틀린 것은 무엇입니까?

  1. String은 클래스이므로 참조 타입이다. 
  2. String 타입의 문자열 비교는 ==을 사용해야 한다. 
  3. 동일한 문자열 리터럴을 저장하는 변수는 동일한 String 객체를 참조한다. 
  4. new String("문자열")은 문자열이 동일하더라도 다른 String 객체를 생성한다. 

4. 배열을 생성하는 방법으로 틀린 것은 무엇입니까?

  1. int[] array = {1, 2, 3};
  2. int[] array; array = {1, 2, 3};
  3. int[] array = new int[3];
  4. int[][] array = new int[3][2];

5. 배열의 기본 초기값에 대한 설명으로 틀린 것은 무엇입니까?

  1. 정수 타입 배열 항목의 기본 초기값은 0이다. 
  2. 실수 타입 배열 항목의 기본 초기값은 0.0f 또는 0.0이다.
  3. boolean 타입 배열 항목의 기본 초기값은 true이다.
  4. 참조 타입 배열 항목의 기본 초기값은 null이다.   

6. 배열의 길이에 대한 문제입니다. array.length의 값과 array[2].length의 값은 얼마입니까?

public class Exercise06 {
    public static void main(String[] args) {
        int[][] array = {
                {95, 86},
                {83, 92, 96},
                {78, 83, 93, 87, 88}
        };
        System.out.println(array.length);
        System.out.println(array[2].length);
    }
}

정답: 

array.length -> (3)

array[2].length -> (5)

7. 주어진 배열의 항목에서 최대값을 구해보세요(for문을 이용하세요.)

import java.util.Arrays;

public class Exercise07{
    public static void main(String[] args) {
        int max = 0;
        int[] array = {1, 5, 3, 8, 2};

		//풀이 1
        for(int i=0;i<array.length;i++){
            Arrays.sort(array);
            max = array[4];
        }
        //풀이 2
        for (int i = 0; i < array.length; i++) {
            if (array[i] > max) {
                max = array[i];
            }
        }


        System.out.println("max: "+max);
    }
}

8. 주어진 배열의 전체 항목의 합과 평균값을 구해보세요.(중첩 for문을 이용하세요.)

public class Exercise08 {
    public static void main(String[] args) {
        int[][] array = {
                {95, 86},
                {83, 92, 96},
                {78, 83, 93, 87, 88}
        };

        int sum = 0;
        double avg = 0.0;
        int count = 0;

        for(int i=0;i<array.length;i++){
            for(int j=0;j<array[i].length;j++){
                sum += array[i][j];
            }
            count += array[i].length;
        }

        avg = (double)sum / count;
        System.out.println("sum: "+sum);
        System.out.println("avg: "+avg);

    }
}

9. 다음은 키보드로부터 학생 수와 각 학생들의 점수를 입력받아서, 최고 점수 및 평균 점수를 구하는 프로그램입니다. 

실행 결과를 보고, 알맞게 작성해보세요.

(참고로 16라인에서 Scanner의 nextInt() 메소드는 콘솔에 입력된 숫자를 읽고 리턴합니다.)

import java.util.Arrays;
import java.util.Scanner;

public class Exercise09 {
    public static void main(String[] args) {
        boolean run = true;
        int studentNum = 0;
        int[] scores = null;
        Scanner scanner = new Scanner(System.in);

        //입력받은 학생 수 만큼 score 배열 생성
        //점수입력 시 배열 인덱스에 차례로 값 입력
        //분석에서 배열 값 중 최고 점수와 평균 점수 산출

        while(run){
            System.out.println("---------------------");
            System.out.println("1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료");
            System.out.println("---------------------");
            System.out.print("선택> ");
            
            int selectNo = scanner.nextInt();
            if(selectNo == 1){
                System.out.print("학생수 > ");
                studentNum = scanner.nextInt();
                scores = new int[studentNum];

            }else if(selectNo == 2){
                for(int i=0;i<scores.length;i++){
                    System.out.print("score["+i+"]> ");
                    scores[i] = scanner.nextInt();
                }
            } else if (selectNo == 3) {
                for(int i=0;i<scores.length;i++){
                    System.out.println("score["+i+"]> "+scores[i]);
                }
                
            } else if (selectNo == 4) {
                int MAX = 0;
                int SUM = 0;
                int AVG = 0;
                for(int i=0;i<scores.length;i++) {
                    if (MAX < scores[i]) {
                        MAX = scores[i];
                    }
                }
                for(int i=0;i<scores.length;i++){
                    SUM += scores[i];
                    AVG = SUM / scores.length;
                }
                System.out.println("최고 점수> "+MAX);
                System.out.println("평균 점수> "+AVG);
            }else if(selectNo == 5){
                run = false;
            }
        }
        System.out.println("프로그램 종료");
    }
}
반응형