CodeGym /Java Blog /무작위의 /Java의 행렬 - 2D 배열
John Squirrels
레벨 41
San Francisco

Java의 행렬 - 2D 배열

무작위의 그룹에 게시되었습니다

Java의 매트릭스/2D 배열이란 무엇입니까?

"행렬은 고정된 수의 행과 열로 배열된 숫자의 모음입니다." 일반적으로 이들은 실수입니다. 일반적으로 행렬은 복소수를 포함할 수 있지만 단순화를 위해 여기서는 정수만 사용합니다. 행렬이 어떻게 생겼는지 살펴봅시다. 다음은 4개의 행과 4개의 열이 있는 행렬의 예입니다.Java의 행렬 - 2D 배열 - 2
그림 1: 간단한 4x4 행렬
Java에서 이 행렬을 나타내기 위해 2차원 배열을 사용할 수 있습니다. 2D 배열은 2차원을 사용합니다. 하나는 행용이고 다른 하나는 열용입니다. 예를 들어 정수 배열 int arr[4][4]를 지정하면 행렬에 4개의 행과 4개의 열이 있음을 의미합니다. 또는 각 행에 대해 4개의 열이 있다고 말할 수 있습니다. 행렬의 총 크기/셀 수는 행*열 = mxn = 4x4 = 16입니다.Java의 행렬 - 2D 배열 - 3
그림 2: Java에서 2D 배열로 표현된 그림 1의 행렬[4][4]

2D 배열 선언 및 초기화

다음은 배열의 크기만 선언하거나 크기를 언급하지 않고 초기화하는 몇 가지 방법입니다.

public class Matrices {

	public static void main(String[] args) {

		// declare & initialize 2D arrays for int and string
		int[][] matrix1 = new int[2][2];
		int matrix2[][] = new int[2][3];
           
           //the size of matrix3 will be 4x4
		int[][] matrix3 = { { 3, 2, 1, 7 }, 
					   { 9, 11, 5, 4 }, 
					   { 6, 0, 13, 17 }, 
					   { 7, 21, 14, 15 } };

		String[][] matrix4 = new String[2][2];

           //the size of matrix5 will be 2x3 
           // 3 cols because at max there are 3 columns
		String[][] matrix5 = { { "a", "lion", "meo" },  
				            { "jaguar", "hunt" } };
	}
}

2D 어레이 순회

우리 모두는 Java에서 일반 배열을 탐색하는 방법을 알고 있습니다. 2D 배열의 경우에도 어렵지 않습니다. 이를 위해 일반적으로 중첩된 'for' 루프를 사용합니다. 일부 초보자는 이질적인 개념이라고 생각할 수도 있지만, 조금 더 깊이 파고들면 어느 정도 연습을 통해 구현할 수 있습니다. 다음 스니펫을 살펴보십시오. 철저한 이해를 위해 각 행에 해당하는 열 수만 표시합니다.

public class MatrixTraversal {
	public static void main(String[] args) {

	    int[][] matrix = new int[4][4];
	    for (int i = 0; i < matrix.length; i++) 
	    {   
		 // length returns number of rows
		 System.out.print("row " + i + " : ");		
		 for (int j = 0; j < matrix[i].length; j++) 
		 { 
		    // here length returns # of columns corresponding to current row
		    System.out.print("col " + j + "  ");
		 }
	    System.out.println();
	   }
	}
}
산출
0열 : 0열 1열 2열 3열 1열 : 0열 1열 2열 3열 2열 : 0열 1열 2열 3열 3열 : 0열 1열 2열 3열

Java에서 2D 배열을 인쇄하는 방법은 무엇입니까?

2D 배열 순회에 익숙해지면 Java에서 2D 배열을 인쇄하는 몇 가지 방법을 살펴보겠습니다.

중첩된 "for" 루프 사용

이것은 Java에서 행렬을 인쇄하는 가장 기본적인 방법입니다.

public class MatrixTraversal {

    public static void printMatrix(int matrix[][])
    {
        for (int i = 0; i < matrix.length; i++) 
	  {   
	    // length returns number of rows		
	    for (int j = 0; j < matrix[i].length; j++) 
	    { 
	      // here length returns number of columns corresponding to current row
		// using tabs for equal spaces, looks better aligned
		// matrix[i][j] will return each element placed at row ‘i',column 'j'
		System.out.print( matrix[i][j]  + "\t"); 
	     }
	     System.out.println();
	   }
	}
	
	public static void main(String[] args) {

		int[][] matrix = { { 3, 2, 1, 7 }, 
					 { 9, 11, 5, 4 }, 
					 { 6, 0, 13, 17 }, 
					 { 7, 21, 14, 15 } };
		printMatrix(matrix);
	}
}
산출
3 2 1 7 9 11 5 4 6 0 13 17 7 21 14 15

"for-each" 루프 사용

다음은 " foreach 루프 " 를 사용하여 Java에서 2D 배열을 인쇄하는 또 다른 방법입니다 . 이것은 Java에서 제공하는 특별한 유형의 루프로, 여기서 int[]row는 행렬의 각 행을 반복합니다. 반면 변수 "요소"는 행을 통해 열 인덱스에 배치된 각 요소를 포함합니다.

public class MatrixTraversal {

	public static void printMatrix(int matrix[][]){
		for (int [] row : matrix) 
		{   
			// traverses through number of rows		
			for (int element : row) 
			{ 
				// 'element' has current element of row index
				System.out.print( element  + "\t"); 
			}
			System.out.println();
		}
	}
	
	public static void main(String[] args) {

		int[][] matrix = {  { 3, 2, 1, 7 }, 
					  { 9, 11, 5, 4 }, 
					  { 6, 0, 13, 17 }, 
					  { 7, 21, 14, 15 } };
		printMatrix(matrix);
	}
}
산출
3 2 1 7 9 11 5 4 6 0 13 17 7 21 14 15

"Arays.toString()" 메서드 사용

Java의 Arrays.toString() 메서드는 전달된 모든 매개변수를 단일 배열로 변환하고 내장 메서드를 사용하여 인쇄합니다. 우리는 놀 수 있는 더미 문자열 2D 배열을 만들었습니다. 동일한 방법이 정수 배열에도 적용됩니다. 운동을 위해 연습하는 것이 좋습니다.

import java.util.Arrays;
public class MatrixTraversal {
	public static void printMatrix(String matrix[][]){
	
		for (String[] row : matrix) {
			// convert each row to a String before printing
			System.out.println(Arrays.toString(row));
		}
	}
	
	public static void main(String[] args) {

		String [][] matrix = {  { "Hi, I am Karen" }, 
						{ "I'm new to Java"}, 
						{ "I love swimming" }, 
						{ "sometimes I play keyboard"} };
		printMatrix(matrix);
	}
}
산출
[안녕하세요 저는 Karen입니다] [Java를 처음 접합니다] [수영을 좋아합니다] [가끔 키보드를 칩니다]

코드 설명

첫 번째 반복에서 String[]row는 "Hi, I am Karen"을 배열로 읽고 문자열로 변환한 다음 인쇄합니다. 그것이 모든 반복이 일어나는 방식입니다. 여기에 제공된 유틸리티는 인덱스(i, j) 또는 중첩된 루프를 추적할 필요가 없다는 것입니다.

결론

Java의 2D 배열은 다차원 배열 중에서 가장 단순합니다. 이 기사의 끝에서 우리는 당신이 그것들을 사용하는 것을 두려워하지 않고, 오히려 진지한 작업을 위해 소매를 걷어붙일 준비가 되기를 바랍니다. 이러한 샘플 코드를 모두 실행하거나 편의에 따라 한 줄씩 디버그할 수 있습니다. 그러나 결국에는 (항상 그렇듯이) 기술은 훌륭한 연습과 인내와 함께 온다는 점을 조언하고 싶습니다. Java에서 2D Arrays로 재미있는 학습 경험을 하시길 바랍니다. 행운을 빌어요!
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION