문제: 다음은 1과 9사이의 중복되지 않은 숫자로 이루어진 3자리 숫자를 만들어내는 프로그램이다. (1)~(2)에 알맞은 코드를 넣어서 완성하시오.
class Exercise5_5 {
public static void main(String[] args) {
int[] ballArr = {1,2,3,4,5,6,7,8,9};
int[] ball3 = new int[3];
// 배열 ballArr의 임의의 요소를 골라서 위치를 바꾼다.
for(int i=0; i<ballArr.length; i++) {
int j = (int)(Math.random() * ballArr.length);
int tmp = 0;
<--------문제-------->
<--------문제-------->
}
//배열 ballArr의 앞에서 3개의 수를 배열 ball3로 복사한다.
<--------문제-------->
<--------문제-------->
for(int i=0; i<ball3.length; i++) {
system.out.print(ball3[i]);
}
System.out.println();
}
}
문제의 핵심 Key
- 두 변수를 바꾸는 방법을 아는가?
- 배열을 복사하는 메서드를 사용할 수 있는가?
나의 오답원인
- 두 수를 바꾸는 방법은 제대로 이해하지 못했다.
- System.arraycopy()의 존재를 몰랐다.
핵심개념
1.두 변수의 값을 바꾸는 방법
class practice {
public static void main(String args[]) {
int x = 10, y = 5
int tmp = x; // 1. x의 값을 tmp에 저장
x = y; // 2. y의 값을 x에 저장
y = tmp; // 3. tmp에 저장된 값을 y에 저장
System.out.println("x="+x);
System.out.println("y="+y);
}
}
2.배열의 복사
a.배열 전체 복사 copyOf()
int[] arr = {0,1,2,3,4};
int[] arr2 = Arrays.copyOf(arr, arr.length); // 결과 arr2=[0,1,2,3,4]
int[] arr3 = Arrays.copyOf(arr, 3); // 결과 arr3=[0,1,2]
int[] arr4 = Arrays.copyOf(arr, 7); // 결과 arr4=[0,1,2,3,4,0,0]
b.배열 일부를 복사 copyOfRange()
int[] arr = {0,1,2,3,4};
int[] arr5 = Arrays.copyOfRange(arr, 2, 4); //arr5=[2,3]
int[] arr6 = Arrays.copyOfRange(arr, 0, 7); //arr6=[0,1,2,3,4,0,0]
문제를 풀기위해 했던 노력
출처:자바의 정석 기초편(저자:남궁성, 출판사: 도우출판)
'java > 자바의 정석 연습문제 오답노트' 카테고리의 다른 글
[조건문과 반복문] 연습문제 4-4 (0) | 2022.09.29 |
---|---|
[조건문과 반복문] 연습문제 4-2 (0) | 2022.09.28 |
[조건문과 반복문] 연습문제 4-3 (0) | 2022.09.28 |
[배열] 2차원 배열의 총합 / 평균 구하기 (0) | 2022.08.27 |
[제어문과 반복문]별 찍기 (0) | 2022.08.21 |