이 코드를 보니 2가지 개선할 부분이 있다.
for
문에서 배열의 길이 활용 : 배열의 길이가 달라지면 for
문에서 row < 2
, column < 3
같은 부분을 같이 변경해야 한다. 이 부분을 배열의 길이를 사용하도록 변경해보자. 배열이 커지거나 줄어들어도 for
문의 코드를 변경하지 않고 그대로 유지할 수 있다.package array;
public class ArrayDi3 {
public static void main(String[] args) {
// 2 x 3 2차원 배열, 초기화
int [][] arr = {
{1, 2, 3},
{4, 5, 6}
};
// 2차원 배열의 길이를 활용
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},
{4, 5, 6},
{7, 8, 9}
이번에는 배열에 직접 1, 2, 3 숫자를 적어서 값을 할당하는 것이 아니라, 배열의 크기와 상관없이 배열에 순서대로 1씩 증가하는 값을 입력하도록 변경해보자.
package array;
public class ArrayDi4 {
public static void main(String[] args) {
// 2 x 3 2차원 배열, 초기화
int [][] arr = new int[2][3];
int i = 1;
// 순서대로 1씩 증가하는 값을 입력한다.
for (int row = 0; row < arr.length; row++) {
for (int column = 0; column < arr[row].length; column++) {
arr[row][column] = i++;
}
}
// 2차원 배열의 길이를 활용
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();
}
}
}
for
문을 사용해서 값을 순서대로 입력한다.arr[row][column] = i++
: 후의 증감 연산자(++
)를 사용해서 값을 먼저 대입한 다음에 증가한다.int i = 1
으로 i
가 1부터 시작한다.2차원 배열 선언 부분인 new int[2][3]
을 new int[4][5]
처럼 다른 숫자로 변경해도 잘 동작하는 것을 확인할 수 있다.
new int[4][5]
로 변경시 출력