Programming Languages/Java

[3장] Java 배열 선언 및 생성/ length 필드/ for-each문/ 2차원 배열

마크투비 2021. 4. 5. 00:21

3.3 자바의 배열

배열(array = 인덱스 + 데이터)

  • 인덱스와 인덱스에 대응하는 데이터들로 이루어진 자료 구조
  • 배열은 같은 타입의 데이터들이 순차적으로 저장되는 공간
    • 원소 데이터들이 순차적으로 저장됨
    • 인덱스를 이용하여 원소 데이터 접근
    • 반복문을 이용하여 처리하기에 적합한 자료 구조
  • 배열 인덱스
    • 0부터 시작
    • 인덱스는 배열의 시작 위치에서부터 데이터가 있는 상대 위치

배열 선언, 생성, 초기화

  • 배열에 대한 레퍼런스 변수 선언
int intArray[]; //또는
int [] intArray;

 

  • 배열 생성
intArray = new int [5]; //5개의 정수 배열 할당
int intArray[] = new int [5]; //선언과 동시에 배열 생성

 

  • 배열 초기화
int intArray[] = {4, 3, 2, 1, 0} //5개의 정수 배열 생성 및 값 초기화

 

예제 3-7

import java.util.Scanner;

public class practicemimi {

	public static void main(String[] args) {
		// 양수 5개를 입력받아서 배열에 저장하고, 제일 큰 수를 출력하라
		Scanner scanner = new Scanner(System.in);
		
		int intArray[] = new int [5];
		int max = 0;
		System.out.println("양수 5개를 입력하세요.");
		
		for(int i=0; i<5; i++) {
			intArray[i] = scanner.nextInt();
			if(intArray[i] > max)
				max = intArray[i];
		}
		System.out.print("가장 큰 수는 " + max + "입니다.");
		scanner.close();

	}

}

 

배열의 크기, length 필드

int intArray[];
intArray = new int[5];

int size = intArray.length; //size는 5 
  • 중요한 건 length랑 index 숫자 헷갈리지 않는 것

예제 3-8

import java.util.Scanner;

public class practicemimi {

	public static void main(String[] args) {
		// 배열의 length 필드를 이용하여 배열 크기만큼 정수를 입력받고, 평균을 출력하라.
		Scanner scanner = new Scanner(System.in);
		System.out.println("5개의 정수를 입력하세요.");
		int intArray[] = new int [5];
		double sum = 0.0;
		for(int i=0; i<intArray.length; i++) {
			intArray[i] = scanner.nextInt();
			sum += intArray[i];
		}
		System.out.print("평균은 " + sum/intArray.length);
		scanner.close();
	}

}

 

배열과 for-each문

int [] n = {1, 2, 3, 4, 5}
int sum = 0;
for(int k:n) {
	sum += k;
}

// for문으로 구성하면 다음과 같다.

int [] n = {1, 2, 3, 4, 5}
int sum = 0;
for(int i=0; i<n.length; i++) {
	int k = n[i];
    sum += k;
}

 

예제 3-9

public class practicemimi {

	public static void main(String[] args) {
		// for-each문을 활용하여 int [] 배열의 합을 구하고, 
		// String []배열의 문자열을 출력하라
		int [] n = {1, 2, 3, 4, 5};
		int sum = 0;
		for(int k:n) {
			System.out.print(k + " ");
			sum += k;
		}
		System.out.println("합은 " + sum);
		
		String [] f = {"사과", "배", "딸기", "포도", "체리"};
		for(String s:f)
			System.out.print(s + " ");
	}

}

 

3.4 다차원 배열

2차원 배열

  • 2차운 배열 선언
int intArray[][]; //또는
int [][] intArray;

 

  • 2차원 배열 생성
intArray = new int [2][5]; //또는
int intArray = new int [2][5] //배열 선언과 생성을 동시에

 

  • 2차원 배열의 구조
int i [][] = new int [2][5];
int size1 = i.length; //2차원 배열의 행의 개수 2
int size2 = i[0].length //0번째 행의 열의 개수 5
int size3 = i[1].length //1번째 행의 열의 개수 5

 

예제 3-10

public class practicemimi {

	public static void main(String[] args) {
		// 2차원 배열에 학년별로 1, 2학기 성적을 저장하고, 4년 전체 평점 평균을 구하여라.
		double score [][] = {{3.3, 3.4}, 
							 {3.5, 3.6},
							 {3.7, 4.0},
							 {4.1, 4.2} };
		double sum = 0;
		for(int year=0; year<score.length; year++)
			for(int term=0; term<score[year].length; term++)
				sum += score[year][term];
		
		int n=score.length;
		int m=score[0].length;
		
		System.out.println("4학년 전체 평점 평균은 " + sum/(n*m));
	}

}

 

3.5 메소드의 배열 배열

예제 3-11

public class practicemimi {
	static int[] makeArray() {
		int temp [] = new int [4];
		for(int i=0; i<temp.length; i++)
			temp[i] = i+2; //배열 초기화 2 3 4 5
		return temp;	
	}

	public static void main(String[] args) {
		int intArray[];
		intArray = makeArray();
		for(int i=0; i<intArray.length; i++)
			System.out.print(intArray[i] + " ");
	}

}