지난 포스트의 마지막에 작성한 2차원 배열의 코드를 반복문으로 줄여보겠습니다.
지난 포스트
반복되는 코드를 줄이는 과정
int[][] array = new int[5][5];
array[0][0] = 1;
array[0][1] = 2;
array[0][2] = 3;
array[0][3] = 4;
array[0][4] = 5;
array[1][0] = 6;
array[1][1] = 7;
array[1][2] = 8;
array[1][3] = 9;
array[1][4] = 10;
array[2][0] = 11;
array[2][1] = 12;
array[2][2] = 13;
array[2][3] = 14;
array[2][4] = 15;
array[3][0] = 16;
array[3][1] = 17;
array[3][2] = 18;
array[3][3] = 19;
array[3][4] = 20;
array[4][0] = 21;
array[4][1] = 22;
array[4][2] = 23;
array[4][3] = 24;
array[4][4] = 25;
지난 포스트의 마지막에 작성했던 코드입니다.
이 반복되는 긴 코드들을 지금부터 for문으로 줄여보겠습니다.
일단 위의 상태에서는 어떻게 줄일 수 있는지 감이 오지 않습니다.
그래서 각각의 인덱스에 넣어준 1부터 25까지의 값들을 아래와 같이 바꿔보겠습니다.
int[][] array = new int[5][5];
int num = 1;
array[0][0] = num++;
array[0][1] = num++;
array[0][2] = num++;
array[0][3] = num++;
array[0][4] = num++;
array[1][0] = num++;
array[1][1] = num++;
array[1][2] = num++;
array[1][3] = num++;
array[1][4] = num++;
array[2][0] = num++;
array[2][1] = num++;
array[2][2] = num++;
array[2][3] = num++;
array[2][4] = num++;
array[3][0] = num++;
array[3][1] = num++;
array[3][2] = num++;
array[3][3] = num++;
array[3][4] = num++;
array[4][0] = num++;
array[4][1] = num++;
array[4][2] = num++;
array[4][3] = num++;
array[4][4] = num++;
int 타입의 변수 num을 만들어서 그 안에 1을 넣었습니다.
그리고 그걸 array[0][0]에 대입을 시킨 다음에 증가연산자 ++을 이용해서 1씩 증가시켜서 1부터 25까지의 값을 넣었습니다.
이제 좀 반복된 코드들이 보이기 시작합니다.
int[][] array = new int[5][5];
int num = 1;
for (int i=0; i<5; i++) {
array[0][i] = num++;
}
array[1][0] = num++;
array[1][1] = num++;
array[1][2] = num++;
array[1][3] = num++;
array[1][4] = num++;
array[2][0] = num++;
array[2][1] = num++;
array[2][2] = num++;
array[2][3] = num++;
array[2][4] = num++;
array[3][0] = num++;
array[3][1] = num++;
array[3][2] = num++;
array[3][3] = num++;
array[3][4] = num++;
array[4][0] = num++;
array[4][1] = num++;
array[4][2] = num++;
array[4][3] = num++;
array[4][4] = num++;
첫번째 행(0번 행)만 for문을 이용해서 줄여보았습니다.
다른 곳도 똑같이 줄여봅시다.
int[][] array = new int[5][5];
int num = 1;
for (int i=0; i<5; i++) {
array[0][i] = num++;
}
for (int i=0; i<5; i++) {
array[1][i] = num++;
}
for (int i=0; i<5; i++) {
array[2][i] = num++;
}
for (int i=0; i<5; i++) {
array[3][i] = num++;
}
for (int i=0; i<5; i++) {
array[4][i] = num++;
}
여기까지 중복된 코드들을 줄여보니 또 중복이 보입니다.
이차원 배열의 행만 0부터 4까지 증가하고 나머지 코드들은 다 똑같죠.
이걸 또 이중 for문으로 줄여봅시다.
int[][] array = new int[5][5];
int num = 1;
for (int j=0; j<5; j++) {
for (int i=0; i<5; i++) {
array[j][i] = num++;
}
}
최종적으로 이렇게 코드가 짧아졌습니다.
스크롤을 올려서 처음 코드와 비교를 하면 놀라울 정도로 짧아졌습니다.
여기서 한가지만 더 바꿔줍시다.
int[][] array = new int[5][5];
int num = 1;
for (int j=0; j<array.length; j++) {
for (int i=0; i<array[j].length; i++) {
array[j][i] = num++;
}
}
숫자 5를 array.length로 바꿔주었습니다.
숫자 대신에 array.length를 넣어주시면 혹시 나중에 배열의 칸의 크기가 변경이 된다고 해도 반복문의 코드도 같이 수정을 할 필요가 없어집니다.
안쪽의 for문에는 array[j].length라고 넣었습니다.
행과 열을 확실히 구분해주기 위함입니다.
지금은 5행 5열이니 그냥 array.length를 넣어도 오류가 나지 않겠지만, 행과 열이 다를 경우에는 문제가 발생할 수도 있습니다.
length에 대한 설명은 전에 작성한 위의 포스트에 설명이 나와있으니 참고 바랍니다.
다음 포스트
이 글이 도움이 됐다면 하단의 ♡ 공감 버튼을 꾹 눌러서
빨간 하트♥로 만들어주세요.
지인에게 보여주고 싶은 글이었다면
공감 버튼 옆을 클릭해서 SNS에 공유해주세요.
댓글은 블로그 운영에 큰 힘이 됩니다.
'그 외 프로그래밍 언어 > Java' 카테고리의 다른 글
자바, 간단한 메소드를 만들어 봅시다. (0) | 2021.12.05 |
---|---|
자바, 메소드(method)의 기본 구조 (0) | 2021.12.05 |
자바, 2차원 배열 (0) | 2021.12.04 |
자바, 배열의 선언과 생성 (0) | 2021.11.29 |
자바, 배열 (0) | 2021.11.29 |
댓글