콘텐츠로 이동

5단원 숙제 정답: 배열

문제 1

int[] scores;
int scores[];
int[] values = new int[5];

생성 직후 int 배열의 모든 요소는 0이다.

문제 2

처음 두 출력은 3, 30이다. 마지막 줄은 유효 인덱스가 0-2인데 인덱스 3에 접근하므로 ArrayIndexOutOfBoundsException이 발생한다.

문제 3

99
true

b = a는 배열 내용을 복사한 것이 아니라 같은 배열 객체의 주소를 복사했다.

문제 4

int[] copy = new int[a.length];
for (int i = 0; i < a.length; i++) copy[i] = a[i];

int[] copy2 = new int[a.length];
System.arraycopy(a, 0, copy2, 0, a.length);

문제 5

int[] values = {7, -2, 9, 9, 3};
int max = values[0], index = 0;
for (int i = 1; i < values.length; i++) {
    if (values[i] > max) { max = values[i]; index = i; }
}
System.out.println(max);   // 9
System.out.println(index); // 2

>=가 아니라 >를 써야 같은 9가 나와도 처음 인덱스 2가 유지된다.

문제 6

Java
java
v

String은 불변(immutable) 객체라 원본 문자열의 글자를 바꾸지 못한다. toCharArray()로 만든 배열만 수정되었다.

문제 7

6
5

각 행의 길이는 2, 3, 1이고, table[1][2]는 두 번째 행의 세 번째 요소다.

문제 8

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] score = new int[5];
        int sum = 0, max = Integer.MIN_VALUE, min = Integer.MAX_VALUE;
        for (int i = 0; i < score.length; i++) {
            System.out.print("Score " + (i + 1) + ": ");
            score[i] = sc.nextInt();
            sum += score[i];
            if (score[i] > max) max = score[i];
            if (score[i] < min) min = score[i];
        }
        System.out.printf("max=%d, min=%d, average=%.2f%n", max, min, (double)sum / score.length);
    }
}