본문 바로가기

Java

Java(7) - 배열(Array), 다차원 배열

728x90
반응형

<목차>

1) 배열

   1-1) 개념

   1-2) 예제 풀이

2) 다차원 배열

3) eclipse 추가 실습 코드

 

 

 

 

1) 반복문

1-1) 개념

* 배열

- 자료형의 종류가 아닌 자료형의 집합을 의미

- 고정된 길이를 갖는 연속된 공간(크기가 처음부터 정해져 있으므로 배열의 크기를 늘리거나 줄일 수 없음!!)

- 같은 타입(자료형)의 여러 변수를 하나의 대표적인 변수로 묶음(<-> 클래스 : 다른 타입의 여러 변수를 하나의 대표적인 변수로 묶음)

 

 

 

* 배열 선언 & 초기화

(1) 배열 선언

데이터 타입[] 변수명;

데이터 타입 변수명[];

변수명 = new 데이터 타입[배열 길이];

데이터 타입[] 변수명 = new 데이터 타입[배열 길이];

 

 

(2) 배열 선언 & 초기화

// 배열 선언
int[] arr1 = new int[10];
int arr2[] = new int[10];


// 배열의 초기화
int arr3[] = new int[] {0, 1, 2};
int arr4[] = {3, 4, 5};


// 배열 자료형 선언
int[] = arr5;
arr5 = new int[] {6, 7, 8};       // 먼저 선언하면 “new int”를 생략할 수 있음!!

 

 

(3) 인덱스

배열은 같은 타입의 값을 저장할 수 있는 방이 존재하며, 각 방마다 번호가 있음(0 ~ n)

 

* 인덱스 연산자

- 배열 이름에 []를 사용하는 것을 '인덱스 연산자'라고 함

- 인덱스의 기능은 배열 요소가 저장된 메모리 위치를 찾아주는 역할

 

 

 

1-2) 예제 풀이

패키지 chapter06.array

ArrayTest1.class

package chapter06.array;

public class ArrayTest1 {

	public static void main(String[] args) {
		// 배열 선언 및 초기화
		int[] arr1 = new int[5];     // 타입[] 배열명;
		int arr2[] = new int[5];     // 타입 배열명[];
		
		int[] arr3 = new int[] {0, 1, 2, 3, 4};
		int arr4[] = {0, 1, 2, 3, 4};
		
		// 배열 자료형 선언
		int[] arr5;
		arr5 = new int[] {6, 7, 8};
		
		/*
		// 먼저 선언될 경우 new int[]를 생략할 수 없음
		int arr6[];
		arr6 = {9, 10, 11};
		*/
		
		for (int i = 0; i < arr3.length; i++) {
			System.out.print(arr3[i] + " ");
		}
		
		System.out.println();
		System.out.println("길이: " + arr3.length);

	}

}

 

 

 

 

ArrayTest2.class

package chapter06.array;

public class ArrayTest2 {

	public static void main(String[] args) {
		// 선언 후 할당
		int[] score = new int[5];
		score[0] = 88;
		score[1] = 99;
		score[2] = 70;
		score[3] = 55;
		score[4] = 100;
		
		// 기억해 둘 것 : length의 경우는 method가 아니라 속성이기 때문에 뒤에 소괄호를 붙이지 않는 형태로 사용함!!
		for (int i = 0; i < score.length; i++) {
			System.out.println((i+1) + "번 학생의 성적: " + score[i]);
		}
		
		System.out.println("====================");
		
		// 초기화
		int[] score2 = new int[] {1, 2, 3, 4, 5};
		
		for (int i = 0; i < score2.length; i++) {
			System.out.println((i+1) + "번 학생의 성적: " + score2[i]);
		}

	}

}

 

 

 

 

ArrayTest3.class

package chapter06.array;

public class ArrayTest3 {

	public static void main(String[] args) {
		// 간편한 초기화
        int[] score = {88, 99, 70, 55, 100};
		
		for (int i = 0; i < score.length; i++) {
			System.out.println(score[i] + " ");
		}
		System.out.println();
		
		// 재초기화
        score = new int[] {1, 2, 3, 4, 5, 6, 7};
		
		for (int i = 0; i < score.length; i++) {
			System.out.println(score[i] + ", ");
		}
		
		System.out.println("\n" + score);

	}

}

 

 

 

 

ArrayTest4.class

package chapter06.array;

public class ArrayTest4 {

	public static void main(String[] args) {
		int[] score = {88, 94, 72, 75, 23};
		int sum = 0;
		for (int i = 0; i < score.length; i++) {
			sum += score[i];
		}
		System.out.println("총점: " + sum);
		System.out.println("평균: " + (float) sum / score.length);

	}

}

 

 

 

 

 

2) 다차원 배열

* 다차원 배열 : 배열의 논리적 메모리 구조가 2차원 이상의 형태를 보이는 배열

- []의 개수가 차원의 수를 의미

- 평면이나 공간 개념을 구현하는데 사용

int[][] arr = new int[5][5];
for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr[i].length; j++) {
        System.out.print(arr[i][j] + “ ”);
    }
    System.out.println();
}


/*
출력 결과:
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
*/

 

 

 

패키지 chapter06.array

TwoDimensionTest1.class

package chapter06.array;

public class TwoDimensionTest1 {

	public static void main(String[] args) {
		int[][] score = {
				{77, 56, 70, 82},
				{99, 96, 89, 88},
				{81, 69, 62, 80}
		};
		
		for (int student = 0; student < score.length; student++) {
			System.out.print((student+1) + "번 학생의 성적");
			
			for (int subject = 0; subject < score[0].length; subject++) {
				System.out.print(score[student][subject] + " ");
			}
			
			System.out.println();
		}

	}

}

 

 

 

 

TwoDimensionTest2.class

package chapter06.array;

public class TwoDimensionTest2 {

	public static void main(String[] args) {
		int[][] score = {
				{77, 56, 70, 82},
				{99, 96, 89, 88},
				{81, 69, 62, 80}
		};
		
		// st = student / sj = subject
		int classSum = 0;
		
		for (int st = 0; st < score.length; st++) {
			int sum = 0;
			
			for (int sj = 0; sj < score[0].length; sj++) {
				sum += score[st][sj];
			}
			System.out.println((st+1) + "번 총점: " + sum
					+ ", 평균: " + (float) sum / score[0].length);
			classSum += sum;
		}
		System.out.println("학급 전체 평균: " + (float) classSum / (score.length * score[0].length));

	}

}

 

 

 

 

TwoDimensionTest3.class

package chapter06.array;

public class TwoDimensionTest3 {

	public static void main(String[] args) {
		int[][] score = {
				{77, 56, 70, 82, 95, 96, 98, 82},
				{99, 96},
				{81, 69, 62, 80, 77}
		};
		
		for (int st = 0; st < score.length; st++) {
			System.out.print((st+1) + "번 학생 성적: ");
			
			for (int sj = 0; sj < score[st].length; sj++) {
				System.out.print(score[st][sj] + " ");
			}
			System.out.println();
		}

	}

}

 

 

 

 

 

3) eclipse 추가 실습 코드

패키지 chapter06.array

Array_Example01.class

package chapter06.array;

import java.util.Scanner;

public class Array_Example01 {

	public static void main(String[] args) {
		/*
		Original : 10 20 30 40 50 60 70 80 90 100
		변경하고 싶은 위치1을 입력하세요
		1
		변경하고 싶은 위치2를 입력하세요
		10
		New : 100 20 30 40 50 60 70 80 90 10
		*/
		
		Scanner scan = new Scanner(System.in);
		
		int[] original = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
		
		System.out.print("Original: ");
		for (int i = 0; i < original.length; i++) {
			System.out.print(original[i] + " ");
		}
		System.out.println();
		
		System.out.println("변경하고 싶은 위치1을 입력하세요");
		int num1 = scan.nextInt();
		System.out.println("변경하고 싶은 위치2를 입력하세요");
		int num2 = scan.nextInt();
		
		int temp;
		
		temp = original[num1 - 1];
		original[num1 - 1] = original[num2 - 1];
		original[num2 - 1] = temp;
		
		System.out.print("Change: ");
		for (int i = 0; i < original.length; i++) {
			System.out.print(original[i] + " ");
		}

	}

}

 

 

 

 

Array_Example02.class

package chapter06.array;

import java.util.Scanner;

public class Array_Example02 {

	public static void main(String[] args) {
		/*
		문제
		    원소 개수를 입력받아 배열을 생성하고 각 원소의 값을 입력받아 저장한 후,
		    전체 원소의 합계를 구하여 출력한다.
		조건 
		    배열 원소 개수는 2 이상의 정수로 입력받는다.
		    2 미만의 값이 입력되면 오류 메시지를 출력하고 다시 입력받는다.
		출력 결과
		    배열의 크기 : 5
		    arr[0] = 1
		    arr[1] = 2
		    arr[2] = 3
		    arr[3] = 4
		    arr[4] = 5
		    1 + 2 + 3 + 4 + 5 = 15
		*/
		
		Scanner scan = new Scanner(System.in);
		
		System.out.print("배열의 크기 : ");
		int arrSize = scan.nextInt();
		
		while (arrSize < 2) {
			System.out.println("배열의 크기를 2 이상으로 다시 입력해주세요!");
			
			System.out.print("배열의 크기 : ");
			arrSize = scan.nextInt();
		}
		
		int num; // 입력값
		int resultArr[] = new int[arrSize]; // 입력값으로 구성된 배열

		int sum = 0; // 입력값들의 합

		for (int i = 0; i < arrSize; i++) {
			System.out.print("arr[" + i + "] = ");
			num = scan.nextInt();

			resultArr[i] = num;

			if (i == (arrSize - 1)) {
				for (int j = 0; j < resultArr.length; j++) {
					if (j < resultArr.length - 1) {
						System.out.print(resultArr[j] + " + ");
						sum += resultArr[j];
					} else {
						sum += resultArr[j];
						System.out.print(resultArr[j] + " = " + sum);
					}
				}
			}
		}

	}

}