Java

10.20.(목) Java-07: 배열

콜라든포비 2022. 10. 21. 12:48

배열

변수는 한개의 데이터를 저장한다. 따라서 비슷한 종류의 데이터들을 정의할때, 각각 다른 이름의 변수들로 정의를 했다.

이제는 배열을 이용해 같은 타입의 데이터를 연속된 공간에 저장하는 방법을 배워보자.

자료형[] 배열명=new 자료형[] {데이터0, 데이터1, 데이터2,...}

배열의 조건은 자료형이 통일된 데이터라는 것이다. 개수는 정해져있지 않으며, 배열의 순서는 1번이 아닌 0번부터 시작한다.

char[] arr=new char[] {'A', 'B', 'C'};
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);

for(int i=0; i<3; i++) {
	System.out.println(arr[i]);
}

제어문을 이용해서 배열을 출력하려고 할때, 배열안의 데이터 개수를 정확하게 알아야할 필요는 없다.

위 예시의 for문의 조건식인 i < 3; 을 i < arr.length; 로 바꿔주면, 배열의 개수 자체를 넣어줄 수 있다.

 

배열에서 최대, 최소값 출력하기

import java.util.Scanner;
public class ArrayMaxMin {

	public static void main(String[] args) {
		
		//임의의 수 5개를 입력받아서 최대값, 최소값 출력
		Scanner sc=new Scanner(System.in);
		
		int[] num=new int[5];
		for(int i=0; i<num.length; i++) {
			System.out.print("수를 입력해주세요: ");
			num[i]=sc.nextInt();	// ex) 15, 24, 36, 77, 53
		}
		System.out.println();
		
		int max=num[0];	// 몇번째 배열인지는 상관없음
		for(int i=0; i<num.length; i++) {
			if(max < num[i]) {		// max 15 < 15 --> don't run --> i++
				max=num[i];			// 배열 중 기존 max의 데이터보다 더 큰 숫자가 나오면 그 숫자를 max변수에 대입한다
			}
		}
		System.out.println("maximum: " + max);
		
		int min=num[0];
		for(int i=0; i<num.length; i++) {
			if(min > num[i]) {
				min=num[i];		// 작은 수가 나타나면 그 숫자를 min변수에 대입
			}
		}
		System.out.println("minimum: " + min);
		
		sc.close();
	}
}

 

2차원, 다차원 배열

배열은 행렬개념이라고 볼 수 있다.

하나의 배열에 5개의 데이터를 나열하면, 그 데이터는 1행의 5열의 값이라고 할 수 있다.

이를 확장해서 2행, 3행... 이렇게 다차원의 행렬로 나타낼 수 있다.

int[][] array=new int[][] {{10, 20, 30},{20, 30, 40},{30, 40, 50},{40, 50, 60}};

차원이 하나씩 늘수록 대괄호를 하나씩 더 붙여주기만 하면 된다.

 

※ 반복문 추가내용: break, continue

switch~case의 예제에서 사용했던 break는 break가 포함된 블럭을 빠져나오게 하는 역할을 한다.

for(int i=1; i<=10; i++) {
	if(i==5) {
		break;		// if문을 제외한 가장 가까운 블럭 밖으로 빠져나간다.
				// 반복문 안에서만 사용된다.
	}
	System.out.println(i);
}

비슷하지만 조금 다른 continue는 현재 명령문을 실행하지 않고 다음 조건으로 건너뛰게해주는 역할을 한다.

for(int i=1; i<=10; i++) {
	if(i==5) {
		continue;	// i==5일때 건너뜀
	}
	System.out.println(i);
}