Welcome to Wesley & Harry's Traveling & Programming

IT Program/Java Basic

자바(java) 다중배열(array), 이차원 배열 for문, 이차원 랜덤 배열

Wesley & Harry 2022. 3. 5. 19:43
반응형

지난 포스팅에 이어 배열에 대해 알아보도록 하겠습니다.

이번에는 이차원배열에 대해 알아보도록 하겠습니다.

이차원 배열은 저희가 어릴적 수학시간에 배웠습니다.

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문으로 배열만들기 & 랜덤 배열 생성 & 증가하는 배열 생성

 

자바(java) for문으로 배열만들기 & 랜덤 배열 생성 & 증가하는 배열 생성

저희는 저번 게시물을 통해 랜덤숫자를 사용하는 법과 배열(array)에 대해 배웠습니다. 우선 for문을 통해 배열을 만드는 법부터 배워보도록 합니다. 아래 코드를 살펴봅시다. package wesley.java.practic

dongwoonew.tistory.com

해당 게시글을 보고 왔다면 이 코드는 이해가 금방 가능할 것이다.

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
}

코드를 한줄 넣어주는 것만으로도 이차원 배열에 랜덤 숫자가 들어가는 것을 볼 수 있다.

결과를 보면서 해당 게시글을 마무리해보도록 하겠다.

 

반응형