자바

[java] 다차원배열

미스터 한뺑 2023. 4. 5. 00:20
반응형

1. 다차원배열

전에 배웠던 배열은 1차원배열이다. 이번에 배울 배열은 다차원배열이다. 2차원배열은 수학의 행렬을 떠올리면 쉽다.

자바는 2차원 배열을 중첩 배열 방식으로 구현한다.

int [][] scores = new int [2][3]

이런 식으로 대괄호를 2번 넣어주면 2차원 배열을 생성하는 코드가 된다. 위에 코드를 실행시키면 3개의 배열의 객체를 생성된다. 

위에 코드를 실행을 해보면 행이 2 ,열이  3인 2차원 배열인지 확인 할수 있다. 

 

 

배열 한 칸이 비어있는 상황에서는 새롭게 인데스를 수정을 해서 배열을 생성할 수 가 있다. 그러나 이런 형태의 배열은 주의할 점이 있다. 배열의 정확한 길이를 알고 인덱스를 사용해야한다. 안그러면 ArrayIndexOutOfBoundsException을 발생시킨다. 이 의미는 배열의 인덱스가 없어서 발생하는 오류이다.

 

굳이 인덱스로 배열의 값을 넣지 않아도 직접 값을 배열에 저장시킬수 있다. int[][] scores 라는 배열을 생성해주고 

중괄호를 써서 2차원 배열에 맞게 {{값1,값2},{값1,값2}} 으로 작성하면 인덱스는 똑같이 {{0,1},{0,1}}이 되는것이다.

 

예시)

public class ArrayInArray {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int [][] mathScores = new int [2][3];
		for(int i = 0; i<mathScores.length; i++) {
			for(int k = 0; k<mathScores[i].length; k++) {
				System.out.println("mathScores["+i+"]["+k+"]=" +mathScores[i][k]);
			}
		}
		System.out.println();
		
		
		int [][] englishScores = new int[2][];
		englishScores[0] = new int [2];
		englishScores[1] = new int [3];
		
		for(int i=0; i<englishScores.length; i++) {
			for(int k = 0; k<englishScores[i].length; k++) {
				System.out.println("englishScores["+i+"]["+k +"]="+englishScores[i][k] );
			}
		}
	 System.out.println();
	 
	 int[][] javaScores = {{67,43},{56,78,43}};
	 for(int i = 0; i<javaScores.length; i++) {
		 for(int k =0; k<javaScores[i].length; k++) {
			 System.out.println("javaScores["+i+"]["+k+"]=" + javaScores[i][k] );
		 }
	 }
	}

}

반응형