[Java/자바]배열(3) 다차원 배열
안녕하세요 오늘은 자바에서 배열중에 다차원 배열에 대해 알아보도록 하겠습니다.
그냥 배열도 어려운데 다차원 배열이라니..
사실 다차원 배열은 이름만 좀 어려워 보이지 생각보다 쉬운 개념입니다.ㅎㅎ
다차원 배열이란?
저희가 지금까지 본 배열은 1차원 배열입니다. 이와 달리 값들이 행과 열로서 구성된 배열을 2차원 배열이라고 합니다.
배열 안에 또 다른 배열이 있는 것이지요!!
2차원 배열의 선언
자료형 [ ] [ ] 배열명;
일차원 배열에 [ ] 하나만 더 추가됐다고 생각하면 좋습니다.
2차원 배열의 생성
배열명 = new 자료형 [크기][크기]
ex) int arr [ ] [ ] = new int [3] [4];
arr [3][4]라는 이차원 배열은 이런 그림으로 이루어져 있다고 보시면 쉽습니다.
2차원 배열의 예시
public class Array2 {
public static void main(String[] args) {
//5개의 정수형 변수를 묶는 1차원 배열 x2 = 2차원 배열
//1차원 배열만 사용했을 경우
int arr1[]= new int[5];
int arr2[]= new int[5];
//자료형 배열명[] []=new int[묶음의 갯수][각 묶음의 요소 갯수]
int arr[][]=new int[2][5];
}
}
2차원 배열을 사용 안 했을 경우 arr1과 arr2처럼 배열을 두 개 만들어 주어야 합니다.
하지만 2차원 배열을 사용하면 한 줄에 두 개의 배열을 만들어 주어 코드 가독성도 높아지고 배열의 값을 관리하 좀 더 수월해지는 것이지요.
따라서 int [2][5]라는 이차원 배열은 2열 5행인 구조를 갖고 있네요.
2차원 배열의 초기화
자료형 배열명 [ ] [ ] ={
{값 1, 값 2, 값 3…}, //1번째 배열
{값 4, 값 5, 값 6…}. //2번째 배열
{값 7, 값 8, 값 9…}, //3번째 배열
};
{ }는 열 안에 있는 값은 행을 뜻하겠네요.
2차원 배열 예시_2
<2차원 배열의 모든 값을 출력하기>
4명의 학생의 점수 3개를 입력받아 scores라는 2차원 배열에 저장하여 출력하는 코드를 작성해 봅시다.
package day05_Array2;
import java.util.Scanner;
public class Array2_Ex {
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
int scores[][]= new int[4][3];
String subject[]= {"국어","영어","수학"};
for(int j=0;j<4;j++){
System.out.println(j+1+"번학생 점수--");
for(int i=0;i<3;i++) {
System.out.println(subject[i]+":");
scores[j][i]=sc.nextInt();
}
}
//2차원 배열에 저장된 값을 출력
for(int i=0;i<3;i++) {
System.out.print("\\t"+subject[i]);
}
System.out.println();
for(int j=0;j<4;j++) {
System.out.println();
System.out.print(j+1+"번 \\t");
for(int i=0;i<3;i++) {
System.out.print(scores[j][i]);
System.out.print("\\t");
}
}
}
}
우선 2차원 배열을 생성한 뒤 값을 입력받는 부분부터 보도록 하죠
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
int scores[][]= new int[4][3];
String subject[]= {"국어","영어","수학"};
for(int j=0;j<4;j++){
System.out.println(j+1+"번학생 점수--");
for(int i=0;i<3;i++) {
System.out.println(subject[i]+":");
scores[j][i]=sc.nextInt();
}
}
int scores [][]= new int [4][3]; =>4명의 학생에 3개의 점수를 넣어줄 2차원 배열을 만들어 줍니다.
String subject []= {"국어", "영어", "수학"}; => 국어, 영어, 수학이란 문자열은 for문으로 증가할 수 없기에 문자열을 담아주는 문자열 배열도 만들어 줍니다.
for(int j=0;j <4;j++){ System.out.println(j+1+"번 학생 점수--");
for(int i=0;i <3;i++) { System.out.println(subject [i]+":"); scores [ j ] [ i ]=sc.nextInt(); }
}
= > n번 학생의 점수를 출력하기 위해 for문을 돌린 뒤 [i][j] i 번째 학생의 점수를 출력하기위해 이중 for문을 돌려줍니다.
2차원 배열에 저장된 값을 출력
for(int i=0;i<3;i++) {
System.out.print("\t"+subject[i]);
}
System.out.println();
for(int j=0;j<4;j++) {
System.out.println();
System.out.print(j+1+"번 \t");
for(int i=0;i<3;i++) {
System.out.print(scores[j][i]);
System.out.print("\t");
}
}
for(int i=0;i <3;i++) { System.out.print("\t"+subject [i]); } => for문을 사용해서 과목을 출력해 줍니다.
for(int j=0;j <4;j++) {
System.out.println();
System.out.print(j+1+"번 \t");
for(int i=0;i <3;i++) {
System.out.print(scores [j][i]);
System.out.print("\t");
}
}
=> 출력 또한 입력과 마찬가지로 이중 for문을 사용하여 출력해 줍니다.
출력 결과
짜잔 이쁘게 꾸며서 결과를 출력해봤습니다 ㅎㅎ
이상으로 다차원(2차원) 배열에 대해 알아보았습니다.
글 읽어주셔서 감사합니다~