2차원 배열 - 리펙토링
int[][] arr = {
{1,2,3},
{4,5,6}
};
***
for(int row = 0; row < arr.length; row++) {
for(int column = 0; column < arr[row].length; column++) {
System.out.print(arr[row][column] + " ");
}
System.out.println();
초기화
- 1차원 배열은
{1, 2, 3}과 같이 초기화 한다.
- 2차원 배열은
{ {1, 2, 3}, {4, 5, 6} }과 같이 초기화 한다. 밖이 행이되고, 안이 열이 된다. 그런데 이렇게 코드를 적으면 행열이 잘안느껴진다.
- 이렇게 라인을 넘겨주면 행과 열이 명확하게 느껴져 코드를 이해하기 쉽다
{
{1, 2, 3},
{4 ,5 ,6}
}
for문에서는 2차원 배열의 길이를 활용했다.
arr.length는 행의 길이를 뜻한다. 여기서는 2가 출력된다.
▶️ {{}, {}}를 생각해보면 arr배열은 {},{}2개의 배열 요소를 가진다.
arr[row].length는 열의 길이를 뜻한다. 여기서는 3이 출력된다.
▶️ arr[0]은 {1,2,3} 배열을 뜻한다. 이 배열에는 3개의 요소가 있다.
▶️ arr[1]은 {4,5,6} 배열을 뜻한다. 이 배열에는 3개의 요소가 있다.
구조 개선 - 값 입력
- 이번에는 배열에 직접 1,2,3 숫자를 적어서 값을 할당하는 것이 아니라, 배열의 크기와 상관없이 배열에 순서대로 1씩 증가하는 값을 입력하도록 변경해보자.
int [][] arr = new int[2][3];
***
int i = 1;
for (int row = 0; row < arr.length; row++) {
for(int column = 0; column < arr[row].length; column++){
arr[row][column] = ++i;
}
}
***
for(int row=0; row < arr.lenght; row++) {
for(int column = 0; column < arr[row].length; column++) {
System.out.print(arr[row][column] + " ");
}
- 중첩된
for문을 사용해서 값을 순서대로 입력한다.
arr[row][column] = i++후의 증감 연산자 (++)를 사용해서 값을 먼저 대입한 다음에 증가한다.
▶️ 코드에서 int i = 1으로 i가 1부터 시작한다.