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문을 사용해야 한다.
알파벳을 순서대로 출력해보자.
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]으로 바꾸는게 좋을 것 같다.
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(); // 개행(인쇄 위치 또는 표시 위치를 다음 행의 같은 위치로 움직이는 일.)
}
}
}