Java

[Java/자바]배열(3) 다차원 배열

둥구는 지굴다 2022. 9. 23. 18:45

안녕하세요 오늘은 자바에서 배열중에 다차원 배열에 대해 알아보도록 하겠습니다.

그냥 배열도 어려운데 다차원 배열이라니..

사실 다차원 배열은 이름만 좀 어려워 보이지 생각보다 쉬운 개념입니다.ㅎㅎ

다차원 배열이란?

저희가 지금까지 본 배열은 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차원) 배열에 대해 알아보았습니다.

글 읽어주셔서 감사합니다~