1.다차원 배열


03-01에서 설명한 배열의 다차원 선언에 대한 설명이다.


일차원 배열의 경우 int [] 변수이름과 같이 선언하는데


다차원의 경우는 원하는 차원 수 만큼 []를 늘주면 된다.


2, 3차원의 예


String[][] royal = new String[4][4];


String[][][] royal = new String[4][4][3];


2.배열의 길이, length


배열 선언시 지원되는 메서드 중 하나인 length는 배열 방의 길이를 반환해준다.


위의 예에서 royal.length를 하면 royal[의 1차원 길이가 반환되고


royal[x].length를 사용하면 2차원의 길이가 반환된다.


length는 배열이 쓰일때 for에 자주 활용되므로 꼭 기억해두자.




- 2차원 예

package chap03.exam03.MultiArr;

public class TwoD {

	public static void main(String[] args) {
		// 4층 4호를 가지고 있는 royal 아파트 만들기
		String[][] royal = new String[4][4];
		// royal.length = royal 아파트의 층 수
		//royal[i].length = i 층의 호 수
		
//		royal[0][0] = "0층 0호";
		for(int i = 0; i < royal.length; i++) {
			for(int j = 0; j < royal[i].length; j++) {
				royal[i][j] =  i + "층 " + j + "호";
				System.out.println(royal[i][j]);
			}
		}
		
		// 바로 옆에 arr 아파트, 2층 3호
//		int arr[][] = {
//				{00, 01, 02},
//				{10, 11, 12}
//		};
		
	}

}


- 3차원의 예

package chap03.exam03.MultiArr;

public class threeD {

	public static void main(String[] args) {
		// 4층 4호 방 3개
		String[][][] royal = new String[4][4][3];
		System.out.println("전체 층 수 : " + royal.length);
		System.out.println("0층의 호 수 : " + royal[0].length);
		System.out.println("0층 0호의 방 수 : " + royal[0][0].length);
		System.out.println();
		
		System.out.println(royal[0][0][0]); // Null
		royal[0][0][0] = "철수의 방";
		royal[2][3][2] = "영희의 방";
		//나머지 방을 공실
		
		// 1. 전체 방에 공실 표시를 어떻게??
		for(int i = 0; i < royal.length; i++) {
			for(int j = 0; j < royal[i].length; j++) {
				for(int k = 0; k < royal[i][j].length; k++) {
					
					
					// 2. 영희방과 철수방을 어떻게 빼는가?
					if(royal[i][j][k]== null ) {
						royal[i][j][k] = "공실";
					}

					System.out.println(i + "층 " + j + "호 " + k + "방 : " + royal[i][j][k]);
				}
			}
		}
	}

}

'개념 및 코딩 > 03.배열' 카테고리의 다른 글

[JAVA]03-01.배열, 향상된 for 문  (0) 2018.08.22

1.배열


배열은 단순하게 말하면 변수를 나열하는 것이다.


1. 변수형 [] 변수이름


2. 변수형 변수이름 []


위와 같이 선언을 하고 []가 한칸이므로 1차원 배열이다.


c와는 다르게 java는 제한없이 차원을 늘려서 무한대까지(int[][][][][][][]) 사용 가능하다.


하지만 인간의 머리로는 생각하기 어려워 보통 1~3차원까지 쓴다.


초기화에는 여러가지 방법이 있는데 아래의 예제를 통해서 확인해보자.



package chap03.exam01.arrayDefine;

public class Main {

	public static void main(String[] args) {
		// 배열은 생성시 크기를 정하거나 값이 있어야 한다.
		// 1. 선언과 동시에 값을 추가
		int[] scores = {70, 80, 90};
		// 2. new 연산자로 값을 추가 하는 방법 
		char[] grades = new char[] {'A', 'B', 'C'};
		// 3. 크기만 지정하는 방법
		int[] arry = new int[7];
		
		System.out.println(scores[0] + ", " + grades[0] + ", " + arry[0]);
	}
}


2.향상된 for문


int [] score = {95, 75, 84, 35, 88};


for(int s : score) {

System.out.println(s);

}


위의 5줄짜리 예를 보면 배열을 먼저 선언하고 for 조건에 넣어 주었다.


score 배열의 0번방 부터 차례대로 s에 넣어주고 s를 출력하는 것이다.


for(int s, s < score.length; s++) {

System.out.println(score[s]);

}


위의 반복문과 같다고 보면 된다.


for([배열값을 담을 변수] : [일차원 배열]){

반복문 내용

}

+ Recent posts