AWS 클라우드환경 네이티브 수업 53일차
진행
1. 배열 연습 문제 (7/27 에 포함시킴)
2. 다차원 배열
3. 가변 배열
4. 배열의 복사
5. 다차원 배열 연습 문제
그리고 난 조퇴에에에에에에엑~~~~
요약
1. 다차원 배열
2. 가변 배열
3. 배열의 복사 (System.arraycopy)
다차원 배열
배열은 2차원으로도 만들 수 있다.
구조는 아래와 같다.
방법1.
타입[][] 변수이름;
int[][] scroe;
방법2.
타입 변수이름[][];
int score[][];
다차원 배열에서의 각 요소를 표시하자면 아래와 같다.
0,0 | 0,1 | 0,2 | 0,3 |
1,0 | 1,1 | 1,2 | 1,3 |
2,0 | 2,1 | 2,2 | 2,3 |
위의 표에서
위에서 아래(↓)가 행.
왼쪽에서 오른쪽 방향(→) 이 열이다.
예를 들어보면 아래와 같은 데이터가 있을 때 각 요소는 이렇게 표현 할 수 있다.
int[][] score = {
{ 30, 40, 50, 10 },
{ 60, 70, 80, 10 },
{ 90, 20, 45, 10 },
};
score[0][0] = 30 | score[0][1] = 40 | score[0][2] = 50 | score[0][3] = 10 |
score[1][0] = 60 | score[1][1] = 70 | score[1][2] = 80 | score[1][3] = 10 |
score[2][0] = 90 | score[2][1] = 20 | score[2][2] = 45 | score[2][3] = 10 |
배열에서 반복문은 필수적인데
다차원 배열에서 length는 행과 열 각 축의 표시가 다르다.
행을 표현할 때는 보통
for(int i = 0 ; i < score.length ; i++ ) {
}
열을 표현할 때는 아래와 같다.
for(int j = 0 ; j <score[i].length ; j++) {
}
가변 배열
2차원 이상의 배열에 대해서 자유로운 형태의 배열을 구성할 수 있는데
그렇게 만든 배열을 말한다.
굉장히 자유도가 높다.
구조는 아래와 같다.
자료형[][] 변수 = new 자료형[배열의크기][]
=> 마지막 크기를 정의하는 부분이 비어있다.
예를 들면 아래와 같은 가변 배열이라면 모양새가 그 아래와 같다.
int[][] score = new int[4][];
score[0] = new int [4] ;
score[1] = new int [1] ;
score[2] = new int [5] ;
score[3] = new int [2] ;
score[0][0] | score[0][1] | score[0][2] | score[0][3] |
score[1][0] |
score[2][0] | score[2][1] | score[2][2] | score[2][3] | score[2][4] |
score[3][0] | score[3][1] |
배열의 복사
배열을 복사하려면 반복문을 사용해야하는데 해당 작업이 너무 귀찮다.
때문에 편하게 복사하는 클래스를 하나 소개한다.
바로 System 클래스의 arraycopy() 다.
구조는 아래와 같다.
System.arraycopy(복사할 배열, 의 인덱스, 붙여넣은 배열, 의 인덱스, 복사할 갯수);
쉽게 말해
복사할 배열[인덱스] 부터 복사할 갯수 만큼을
붙여넣을 배열[인덱스] 부터 붙여 넣을거임!
이거다.
예시를 보면
package Lecture;
public class ArrayExam {
public static void main(String[] args) {
char[] abc = {'A', 'B', 'C', 'D'}; // abc.length
char[] num = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
// num.length
char[] result = new char[num.length];
System.arraycopy(num, 0, result, 0, num.length);
System.arraycopy(abc, 0, result, 0, abc.length);
System.out.println(new String(result));
System.arraycopy(num, 0, result, 0, 0);
System.out.println(num);
}
}
결과
ABCD456789
0123456789
첫 결과물 앞에 abc 배열의 값들이 붙은 것을 볼 수 있다.
다차원 배열 연습 문제
문제1. 학생들의 점수는 다음과 같다. 아래와 같은 결과물이 나오게 만들어라.
int[][] score = {
{ 30, 40, 50 }, // 1번 학생의 국영수 점수
{ 60, 70, 80 }, // 2번 학생의 국영수 점수
{ 55, 65, 45 }, // 3번 학생의 국영수 점수
{ 88, 91, 30 }, // 4번 학생의 국영수 점수
{ 30, 45, 92 } // 5번 학생의 국영수 점수
};
결과물
번호 국어 영어 수학 총점 평균
==========================================================
1 30 40 50 120 40
2 60 70 80 210 70
3 55 65 45 165 55
4 88 91 30 209 69
5 30 45 92 167 55
==========================================================
총점 263 311 297
문제1 답.
package LectureExam;
public class ArrayExam {
public static void main(String[] args) {
int[][] score = {
{ 30, 40, 50 }, // 1번 학생의 국영수 점수
{ 60, 70, 80 }, // 2번 학생의 국영수 점수
{ 55, 65, 45 }, // 3번 학생의 국영수 점수
{ 88, 91, 30 }, // 4번 학생의 국영수 점수
{ 30, 45, 92 } // 5번 학생의 국영수 점수
};
int korTotal = 0 ;
int engTotal = 0 ;
int matTotal = 0 ;
System.out.println("번호\t국어\t영어\t수학\t총점\t평균");
System.out.println("==========================================================");
for(int i = 0 ; i < score.length ; i++ ) {
int sum = 0;
System.out.print((i+1) + "\t");
for(int j = 0 ; j <score[i].length ; j++) {
System.out.print(score[i][j] + "\t");
sum += score[i][j];
}
System.out.println(sum + "\t" + sum/3);
}
System.out.println("==========================================================");
System.out.print("총점\t");
for(int k = 0 ; k <score.length ; k++) {
korTotal += score[k][0];
engTotal += score[k][1];
matTotal += score[k][2];
}
System.out.println(korTotal + "\t" + engTotal + "\t" + matTotal);
}
}
'코딩수업 > AWS 클라우드환경 네이티브' 카테고리의 다른 글
8/4 자바(Java) 메소드(method), 메모리를 사용하는 방식, 클래스 변수와 인스턴스 변수, 기본형과 참조형 변수 차이. 생성자, 메소드/생성자 오버 로딩, this (0) | 2022.08.04 |
---|---|
7/29 자바(Java) 클래스와 객체 (참조 변수의 이해, Static ) (0) | 2022.07.29 |
7/27 자바(Java) 배열, 배열의 반복문, 변수.length , 배열 연습 문제, Spring에 외부에서 가져온 프로젝트 넣기 (0) | 2022.07.27 |
7/26 자바(Java) 반복문 연습 문제 (2) | 2022.07.26 |
7/25 자바(Java) 반복문 연습 문제 (2) | 2022.07.25 |
댓글