반응형

 

2차원 배열

 

: 1차원 배열을 이용하여 더 많은 데이터를 삽입하기 위해 만들어진 배열을 말한다.

1차원 배열을 묶어 놓았기에 2차원의 개념이다.

i개의 행과 j개의 열을 가진 테이블이라고 생각하는 것이 이해하기 쉽다.

 

2차원 배열

 

사용법은 아래와 같다.

 

타입[][] 배열명 = 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);
	}
}

 

결과 화면1

 

 

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);
	}
}

 

결과 화면2

 

 

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("-------------------------------------------------------");
		
		
	}
}

 

결과 화면4

 

 

반응형