지난 포스팅에 이어 배열에 대해 알아보도록 하겠습니다.
이번에는 이차원배열에 대해 알아보도록 하겠습니다.
이차원 배열은 저희가 어릴적 수학시간에 배웠습니다.
java에서도 이러한 배열이 가능합니다.
자바에서 이차원 배열의 선언은 해당 코드와 같이 할 수 있습니다.
int[][] wesley = new int[행길이][열길이];
어쩌면 그냥 1차원 배열을 할때와 큰 차이가 없다는 것을 느낄 수 있습니다.
간단한 예제를 통해 알아보도록 합시다. 저번포스팅에서 +1씩 되는 배열과 랜덤으로 들어가는 배열을 알아보았으니
적용해봅니다.
해당 코드에선 i와 j의 혼동을 유의하도록한다
package wesley.java.practice.basic;
public class arrayEx4 {
public static void main(String[] args) {
int[][] wesley = new int[5][5];
int exampleNum = 1;
//배열 번호넣기
for(int i = 0; i< wesley.length;i++) {
for(int j = 0; j < wesley[i].length;j++) {
wesley[i][j] = exampleNum;
exampleNum++;
}
}
//출력부
for(int i = 0;i < wesley.length;i++) {
for(int j = 0;j < wesley[i].length;j++) {
System.out.print(wesley[i][j]+"\t");
}
System.out.println();
}
}// end main
}
코드에 대한 설명을 해보겟습니다.
int[][] wesley = new int[5][5];
5x5 형태의 칸을 가지고 있는 배열을 생성하였습니다.
int exampleNum = 1;
for문에서 사용할 exampleNum 변수의 값을 지정해줍니다.
for(int i = 0; i< wesley.length;i++) {
for(int j = 0; j < wesley[i].length;j++) {
}//end j for
}//end i for
//이부분은 주석이며 중괄호의 마지막을 표기하기 위함.
이때 i기반 for문과 j기반 for문이 보일겁니다. 편리하게 쓰기위해 i for문 j for문이라 칭하겠습니다.
해당 코드는 이차원 배열을 위한 반복문으로써 기본적인 해설을 한다면
----------
첫번째 for문의 i=0 일때
두번째 for문의 j=0일 때 부터
wesley[0].length;
wesley[0]의 길이만큼 반복
wesley[0]의 길이는 여기서 5가 되겠습니다.
wesley[i][j] = exampleNum;
wesley[0][0] = 1;
0행 0열에 1을 넣습니다.
exampleNum++;
exampleNum의 값을 1 증가시킵니다.
j++로 j값 상승 j < wesley[i].length 검사 후 true일 경우 다시 j for문 실행
-----------
for문 i = 0 일때
두번째 for문 j = 1
wesley[i][j] = exampleNum;
wesley[0][1] = 2;
exampleNum++;
exampleNum의 값을 1 증가시킵니다.
j++로 인해 j값 상승 j<wesley[i].length 검사 후 true일 경우 다시 j for문 실행
----------
이와같은 과정을 j의 값이 4가 될때까지 실행을 하게되면
----------
j for문을 벗어나게 됩니다.
그럼 i++로 인해 i의 값이 증가하게 되고
i < wesley.length의 true false를 검사하게 되고 다시 i for문의 실행부인 j for문으로 들어가 위에 ----로 표시된 부분을 반복하게 됩니다.
출력부 또한 똑같은 원리이며 j for문 바깥에 System.out.prinln()을 써준 이유는 해당 코드가 없게된다면
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
이런식으로 출력이 되기 때문에 아래 표와 같이 출력하기 위함이다. j의 반복문이 끝난 후 줄바꿈.
wesley[0][0] | wesely[0][1] | wesley[0][2] | wesley[0][3] | wesley[0][4] |
wesley[1][0] | wesley[1][1] | wesley[1][2] | wesley[1][3] | wesley[1][4] |
wesley[2][0] | wesley[2][1] | wesley[2][2] | wesley[2][3] | wesley[2][4] |
wesley[3][0] | wesley[3][1] | wesley[3][2] | wesley[3][3] | wesley[3][4] |
wesley[4][0] | wesley[4][1] | wesley[4][2] | wesley[4][3] | wesley[4][4] |
결과를 통해 알아보도록 하자.
알맞게 나온것을 알 수 있다.
이로써 우리는 1씩 증가되는 for문을 이용한 이차원배열을 만들고 출력까지 해보았다.
원리를 이해한다면 손쉽게 다가갈 수 있을것이다.
이를이용해 랜덤숫자를 넣는것 또한 가능하다. 랜덤 숫자를 이용해 일차원 배열에 적용했던 방법이 전 포스팅에 있다.
해당 코드의 이해가 필요하다면 전 글을 참조하자.
2022.03.05 - [IT Program/Java Basic] - 자바(java) for문으로 배열만들기 & 랜덤 배열 생성 & 증가하는 배열 생성
해당 게시글을 보고 왔다면 이 코드는 이해가 금방 가능할 것이다.
package wesley.java.practice.basic;
public class arrayEx4 {
public static void main(String[] args) {
int[][] wesley = new int[5][5];
for(int i = 0; i< wesley.length;i++) {
for(int j = 0; j < wesley[i].length;j++) {
wesley[i][j] = (int)(Math.random()*20);
}
}
//출력부
for(int i = 0;i < wesley.length;i++) {
for(int j = 0;j < wesley[i].length;j++) {
System.out.print(wesley[i][j]+"\t");
}
System.out.println();
}
}// end main
}
코드를 한줄 넣어주는 것만으로도 이차원 배열에 랜덤 숫자가 들어가는 것을 볼 수 있다.
결과를 보면서 해당 게시글을 마무리해보도록 하겠다.
'IT Program > Java Basic' 카테고리의 다른 글
자바(java) 배열에 버블정렬 알고리즘 적용(코드) (0) | 2022.03.06 |
---|---|
버블정렬 알고리즘(BubleSort) 과정 및 설명 (4) | 2022.03.06 |
자바(java) for문으로 배열만들기 & 랜덤 배열 생성 & 증가하는 배열 생성 (0) | 2022.03.05 |
고정소수점, 부동소수점에 대해 (0) | 2022.03.04 |
자바(java) 클래스 생성 단축키, 새로운 출력 방법(printf), 이스케이프, 서식 지정자(%d, %s, %c, %f...) (2) | 2022.03.04 |