본문 바로가기

BackEnd/Java

[java] 다차원 배열

728x90
반응형

대괄호[]를 이용해 차원을 늘이고 방의 개수를 늘일 수 있습니다.

 

타입[][] 배열이름;

ex) 2차원 배열
int[][] student;
String[][] name;

// 3차원은 []를 3개 사용하면 됨.

 

2차원, 3차원 이상의 배열을 지정할 수 있습니다.

 

 

배열 지정 방법 예시

 

int[][] student = new int[3][3];

student[0][0]
student[0][1]
student[0][2]
    ...
student[2][1]
student[2][2]

 

총 9개의 방을 지정할 수 있습니다.

 

 

배열의 복사(System.arraycopy)

 

package java1209;

import java.util.Arrays;

public class arr03 {

	public static void main(String[] args) {
		
		int[] a = {1, 2, 3, 4, 5, 6};
		int[] b = {0, 0, 0, 0, 0, 0, 0};
		
		System.out.println(Arrays.toString(a));
		System.out.println(Arrays.toString(b));
		
		System.arraycopy(a, 2, b, 3, 4);
		//a[2]부터 4개를 b[3]부터 4개의 인덱스에 복사해 줍니다.
		
		System.out.println(Arrays.toString(b));
		
	}
}
더보기

[1, 2, 3, 4, 5, 6]

[0, 0, 0, 0, 0, 0, 0]

[0, 0, 0, 3, 4, 5, 6]

 

Arrays.toString(배열이름)은 배열을 String으로 변환 시킨다는 의미입니다.

System.arraycopy(a, 2, b, 3, 4)의 의미는 a의 두 번째가 아닌 a[2] (a의 세 번째)부터 4개의 숫자를 b[3] (b의 네 번째)부터 4개의 숫자를 동일하게 복사시킨다는 의미입니다. 

마지막 배열을 보면 값이 복사가 된 것을 확인할 수 있습니다.

 

 

foreach

 

package java1209;

public class arr04 {

	public static void main(String[] args) {
		
		String[] a = {"Java", "Hello", "Programming"};
		
		for(String i : a) { //foreach 구문
			System.out.println(i);
		}
		
		int[] b = {1,2,3,4,5};
		
		for(int i : b) {
			System.out.print(i);
		}
	}
}
더보기

Java

Hello

Programming

12345

 

결과 값을 확인하면 i라는 변수에 a라는 배열을 저장한 후 모두 불러오는 것입니다.

간단한 문장으로도 배열에 있는 모든 값들을 불러올 수 있다.

 

 

 

 

배열을 이용한 평균점수 출력 예제

 

package java1209;

public class arr04_01 {

	public static void main(String[] args) {
		int[][] scores = {
				{80, 90, 96},    // A반 학생 점수
				{76, 88}         // B반 학생 점수
		};
		
		
		int[] sum = new int[scores.length];
		int allSum = 0;
		double[] avg = new double[scores.length];
		double allAvg = 0.0;
		int cnt = 0;
				
		for(int i=0; i<scores.length; i++) {
			for(int j=0; j<scores[i].length; j++) {
				sum[i] += scores[i][j];
				cnt++;
			}
			
			avg[i] = (double)sum[i] / scores[i].length;
			allSum += sum[i];
		}
		
		allAvg = (double)allSum /cnt;
		
		//출력
		System.out.println("총 반수 : " + scores.length);                             
		System.out.println("A반의 학생 수 : " + scores[0].length);                       
		System.out.println("B반의 학생 수 : " + scores[1].length);                      
		System.out.println("A반의 마지막 학생 점수 : " + scores[0][scores[0].length-1]);  
		System.out.println("B반의 마지막 학생 점수 : " + scores[1][scores[1].length-1]);  
		System.out.println("A반의 평균 점수 : " + avg[0]);                              
		System.out.println("B반의 평균 점수 : " + avg[1]);                              
		System.out.println("전체 평균 점수 : " + allAvg);                             

	}
}
총 반 수 : 2
A반의 학생 수 : 3
B반의 학생 수 : 2
A반의 마지막 학생의 점수 : 96
B반의 마지막 학생의 점수 : 88
A반의 평균 점수 : 88.666666666667
B반의 평균 점수 : 82.0
전체 학생의 평균 점수 : 86.0

 

배열을 이용해서 위와 같은 출력을 이끌어 낼 수 있습니다.

 

for(int[] a : scores) {
	for(int b : a) {
		System.out.print(b + " ");
	}
	System.out.println();
}
80 90 96
76 88

 

금일 배웠던 foreach를 이용해 위와 같이 코드를 입력하면 배열의 값들을 모두 출력할 수 있습니다.

2행까지 있기때문에 중첩 for문을 사용합니다. 그렇지 않으면 제대로된 결과 값을 출력하기 어렵습니다.

 

오늘은 다차원 배열, 배열의 응용에 대해 알아보았는데요, 배열을 이용하니 코드의 길이를 좀 줄일 수 있네요!

 

많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~

 

728x90
반응형

'BackEnd > Java' 카테고리의 다른 글

[java] 메서드(method 기능)  (1) 2022.12.13
[java] 2022.12.09 연습 문제 풀이  (1) 2022.12.13
[java] 조건문(if, switch문)  (0) 2022.12.12
[java] 배열(array)  (0) 2022.12.12
[java] 2022.12.08 추가 연습 문제 풀이  (0) 2022.12.12