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);
}
}