반응형
2차원 배열
: 1차원 배열을 이용하여 더 많은 데이터를 삽입하기 위해 만들어진 배열을 말한다.
1차원 배열을 묶어 놓았기에 2차원의 개념이다.
i개의 행과 j개의 열을 가진 테이블이라고 생각하는 것이 이해하기 쉽다.
사용법은 아래와 같다.
타입[][] 배열명 = new 타입[i][j];
package kr.or.ddit.study05.sec02;
import java.util.Scanner;
public class ArrayExample02 {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
ArrayExample02 obj = new ArrayExample02();
obj.method1();
}
public void method1() {
// 배열을 만들어서
// 국어 영어 수학 점수를 저장해보시오.
int[] s1 = {90, 70, 69};
int[] s2 = {77, 65, 82};
int[] s3 = {57, 90, 43};
int[] s4 = {63, 49, 76};
int[] s5 = {54, 77, 60};
// 이차원 배열
// 1차원 배열을 담고 있는 배열
// int[2차원 배열 수][1차원 배열 수]
int[][] students = new int[5][3];
students[0] = s1;
students[1] = s2;
students[2] = s3;
students[3] = s4;
students[4] = s5;
// 학생 1의 국어 점수.
// s1[0]
int s1_kor = students[0][0];
// 학생 3의 수학 점수.
int s3_meth = students[2][2];
// 학생 4의 영어 점수.
int s4_eng = students[3][1];
// 학생 전체의 국어 점수 합.
int kor_sum = 0;
for (int i = 0; i < students.length; i++) {
kor_sum += students[i][0];
}
System.out.println("학생 전체의 국어 점수 합은 " + kor_sum);
}
}
package kr.or.ddit.study05.sec02;
import java.util.Scanner;
public class ArrayExample02 {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
ArrayExample02 obj = new ArrayExample02();
obj.method2();
}
public void method2() {
int[][] student = { {90, 70, 60},
{77, 65, 82},
{57, 90, 43},
{63, 49, 76}
};
// 첫번째 학생 배열 꺼내오기.
// 2차원 배열의 값을 1차원 배열로 넣을 경우
int[] s1 = student[0];
// 첫번째 학생 국어 점수
int s1_kor = student[0][0];
// 첫번째 학생 점수 총합구하기.
int s1_sum = 0;
for (int i = 0; i < student[0].length; i++) {
s1_sum += student[0][i];
}
// for(int i=0; i<s1.length; i++) {
// s1_sum += s1[i];
// }
System.out.println("첫번째 학생의 점수 총합 : " + s1_sum);
// 전체 영어 점수 구하기
int eng_sum = 0;
for (int i = 0; i < student.length; i++) {
eng_sum += student[i][1];
System.out.println(student[i]); // 주소 값 총 다섯개가 각각 출력된다.
// 이차원 배열은 각각의 주소값을 저장한다.
}
System.out.println("전체 학생의 영어 점수 총합 : " + eng_sum);
}
}
package kr.or.ddit.study05.sec02;
import java.util.Scanner;
public class ArrayExample02 {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
ArrayExample02 obj = new ArrayExample02();
obj.method3();
}
public void method3() {
// 1차원 배열 건너 뛰기
int[][] arr = new int[3][];
arr[0] = new int[3];
arr[1] = new int[4];
arr[2] = new int[5];
}
}
package kr.or.ddit.study05.sec02;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class ArrayExample03 {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
ArrayExample03 obj = new ArrayExample03();
obj.method5();
}
public void method5() {
// 5명의 3과목 성적과 이름을 배열에 저장하고
// 총점과 평균과 등수를 구하여 출력 하시오.
String[] name = {"김영훈", "박채연", "최진호", "김미선", "서혜진"};
int[][] score = { {85, 72, 81, 0, 0, 1},
{67, 90, 87, 0, 0, 1},
{77, 79, 94, 0, 0, 1},
{80, 90, 52, 0, 0, 1},
{97, 65, 77, 0, 0, 1},
};
/*
* 총점 평균 구하기
*/
for(int i=0; i<score.length; i++) {
for(int j=0; j<3; j++) {
score[i][3] += score[i][j];
}
score[i][4] = score[i][3]/3;
}
// for(int i=0; i<score.length; i++) {
// score[i][3] = score[i][0] + score[i][1] + score[i][2];
// score[i][4] = score[i][3]/3;
// }
/*
* 등수 구하기
*/
// i = 본인
for(int i=0; i<score.length; i++) {
// 다른사람
for(int j=0; j<score.length; j++) {
if(score[i][3] < score[j][3]) {
score[i][5]++;
}
}
}
System.out.println("이름\t국어\t영어\t수학\t총점\t평균\t등수");
System.out.println("-------------------------------------------------------");
for(int i=0; i<score.length; i++) {
System.out.print(name[i] + "\t");
for(int j=0; j<score[i].length; j++) {
System.out.print(score[i][j] + "\t");
}
System.out.println();
}
System.out.println("-------------------------------------------------------");
}
}
반응형
'자바' 카테고리의 다른 글
[Java 초급] 12장 배열 복사 (0) | 2023.12.13 |
---|---|
[Java 초급] 10.5.2장 테스트 (0) | 2023.12.12 |
[Java 초급] 10.5.1장 테스트 (0) | 2023.12.11 |
[Java 초급] 10장 1차원 배열 및 버블 정렬, 선택 정렬 (0) | 2023.12.11 |
[Java 초급] 9장 참조 타입 (0) | 2023.12.11 |