Do it 자바 프로그래밍 입문 [다차원 배열]

wish17·2022년 10월 30일
0

Do it 자바

목록 보기
5/10

다차원 배열

2차원 이상의 배열

  • 지도, 게임 등 평면이나 공간을 구현할 때 많이 사용됨.

2차원 배열의 선언과 구조

선언과 초기화

예시

public class TwoDimensionArray {
	
	public static void main(String[] args) {
		
		int[][] arr = {{1,2,3},{4,5,6}};
		
		System.out.println("arr.length : " + arr.length); //length 출력 = 행의 길이가 나옴.
		System.out.println("arr[0].length : " + arr[0].length); // 0번째 행의 길이를 출력하는 것.
		System.out.println("arr[1].length : " + arr[1].length); // 1번째 행의 길이를 출력하는 것.
		
		for(int i=0; i<arr.length; i++) {
			for(int j=0; j<arr[i].length; j++) {
				System.out.println("arr["+i+"]["+j+"] : " + arr[i][j]);
			} // 행렬에서 전체 모든 요소를 출력하려면 중첩된 for문을 사용해야 한다.
		}
	}
}

행렬에서 전체 모든 요소를 출력하려면 중첩된 for문을 사용해야 한다.

응용

알파벳을 순서대로 출력해보자.

실패1

package array;

public class TwoDimensionArrayHW {

	public static void main(String[] args) {
		
		char[][] alphabets = new char[13][2];
		
		for(int i=0; i<alphabets.length; i++) {
			
			for(int j=0; j<alphabets[i].length; j++ ) {
				
				alphabets[i][j] = (char)('A'+i);
				System.out.println("arr["+i+"]["+j+"] : " + alphabets[i][j]);
			}
			
			
			
		}
		
	}
}

System.out.println(alphabets[i][j]); 했을 때
출력되는 순서를 생각하면 행렬을 [13][2]에서 [2][13]으로 바꾸는게 좋을 것 같다.

실패2

package array;

public class TwoDimensionArrayHW {

	public static void main(String[] args) {
		
		char[][] alphabets = new char[2][13];
		
		for(int i=0; i<alphabets.length; i++) {
			
			for(int j=0; j<alphabets[i].length; j++ ) {
				
				alphabets[i][j] = (char)('A'+i+j);
				System.out.println("arr["+i+"]["+j+"] : " + alphabets[i][j]);
			}
			
			
			
		}
		
	}
}

A+i+j로 해둬서 행이 바뀌면 연결이 되지 않는다.
A+i+j와 비슷하고, for문에서 행과 상관 없이 증가되도록 변수를 따로 지정해줘야 할 것 같다.

성공

package array;

public class TwoDimensionArrayHW {

	public static void main(String[] args) {
		
		char[][] alphabets = new char[2][13];
		char nn = 'A';
		
		for(int i=0; i<alphabets.length; i++) {
			
			for(int j=0; j<alphabets[i].length; j++,nn++ ) {
				
				alphabets[i][j] = (char)(nn);
				System.out.println("arr["+i+"]["+j+"] : " + alphabets[i][j]);
			}
			
		}
		
	}
	
}

정답

정답을 보니 문제를 잘못이해하고 만들었던 것 같다.
하지만 과정은 비슷하게 했던 것 같다.

	public static void main(String[] args) {

		char[][] alphabets = new char[13][2];
		char ch = 'a';
		
		for(int i=0; i<alphabets.length; i++) {
			for(int j=0; j<alphabets[i].length; j++) {
				alphabets[i][j] = ch;
				System.out.print("arr["+i+"]["+j+"] : " +alphabets[i][j] + " ");
				ch++;
			}
			System.out.println();  // 개행(인쇄 위치 또는 표시 위치를 다음 행의 같은 위치로 움직이는 일.)
		}
	}
}

0개의 댓글