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 |