배열의 기본 문법 이해하기

JongseokLee·2021년 7월 25일
0
post-thumbnail

배열의 기본 문법 이해하기


배열이란?

동일한 자료형 여러 개를 묶어서 처리하는 자료구조
변수이름과 인덱스(index)를 이용하여 데이터를 표현

배열의 필요성

동일한 자료형 여러 개를 선언하는 경우 변수가 여러 개 필요
배열을 이용하면 하나의 변수만 필요하여 효율적으로 프로그래밍 가능

배열 선언 방법

배열 선언 시 배열 요소의 개수는 지정하지 않음
형식 : 자료형{}배열이름; 자료형 배열이름[];

배열 생성 방법

배열을 생성하는 것은 메모리 할당하는 작업임
new 연산자를 이용하여 배열에 메모리를 할당하면 배열이 생성됨
배열 생성 시 배열 요소의 개수를 지정함
형식 : 자료형 배열이름[]=new자료형[배열 요소의 개수];

배열 초기화 방법

배열 선언 및 생성 후 배열 요소의 값들을 지정하는 방법
배열 선언과 동시에 배열 요소의 값들을 지정하는 방법
배열 선언 후 배열 요소의 값들을 지정하는 방법

배열 요소의 개수

배열 이름.lenth

-배열의 멤버변수로 배열요소의 개수를 가지고 있음

배열과 반복문 사용하기

배열과 반복문의 관계

-배열의 인덱스값은 0부터 순차적으로 증가함
-반복문을 이용하면 인덱스값을 순차적으로 증가할 수 있음
배열이름.length: 배열 요소의 개수를 가짐

문자열 배열 사용하기

문자열 배열 선언 및 생성하기:String[]a=new String[3];
문자열 배열 초기화:String[]a=newString[]{"apple","banana","melon"};

main() 메소드 인수 처리

실행 시 main()메소드의 인수로 값이 넘어옴
인수 지정하는 방법

-[명령 프롬프트]에서 실행 시 지정하는 방법
-[이클립스]에서 지정하는 방법

다차원 배열이란?

2차원 배열이상
종류

-2차원 배열 : 행 N개, 열 N개(1차원 배열이 N개)
-3차원 배열 : 층 N개, 행 N개, 열 N개(2차원 배열이 N개)
2차원 배열 : 2차원 배열 선언 및 생성 후 배열 요소에 초기값 지정
2차원 가변 배열 : 행의 개수는 정해져 있고, 열의 개수가 가변임
2차원 배열의 length 멤버 변수(필드)
-배열이름.length 2차원 배열의 행의 개수
-배열이름[행].length:2차원 배열의 열의 개수

배열 선언과 생성 실습

public class ArrayBasic {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		// 배열의 선언
		int a[];
		int[] b;
		
		// 배열의 생성
		int c[] = new int[5];
		int[] d = new int[5];
		int e[];
		e = new int[5];
		
		// 배열 초기화
		
		int[] f = new int[5];
		f[0] = 10;
		f[1] = 20;
		f[2] = 30;
		f[3] = 40;
		f[4] = 50;
		
		//int[] g = new int[5] { 10,20,30,40,50 }; // 오류발생
		int[] g = new int[] { 10,20,30,40,50 };
		int[] h = { 10,20,30,40,50 };
		
		int[] i;
		i = new int[] { 10,20,30,40,50 };
		// i = {10,20,30,40,50};  // 오류발생
		
		// 배열요소의 개수
		System.out.println("배열 i의 요소 개수는 "+i.length);
		
		int[] j = new int[] { 10, 20, 30, 40, 50 };
		j[5] = 100;  // 실행 오류 발생
		
	}

}

배열과 반복문 실습


import java.util.Scanner;

public class ArrayFor {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner s = new Scanner(System.in);

		// 배열의 값 출력하기		
		System.out.println("[배열의 값 출력하기]");
		int[] a = { 1,2,3,4,5 };    
		//for (int i = 0; i < 5; i++) {
		for (int i = 0; i < a.length; i++) {
			System.out.println("a["+i+"] = "+a[i]);
		}

		// 배열의 값 저장하기
		System.out.println("[배열의 값 저장후 출력하기]");
		for (int i = 0; i < a.length; i++) {
			a[i] = (i + 1) * 10;    
		}
		for (int i = 0; i < a.length; i++) {
			System.out.println("a["+i+"] = "+a[i]);
		}

		// 배열의 합계와 평균 구하기
		System.out.println("[배열의 합계와 평균 구하기]");
		int[] arr = { 34, 10, 25, 71, 84 };
		int sum = 0;
		for (int i = 0; i < arr.length; i++) {
			sum += arr[i];   // sum = sum + arr[i];
		}
		System.out.println("합계 = "+sum+", 평균 = "+((double)sum / a.length));

		// 2개 배열의 합계 배열 만들기
		System.out.println("[2개 배열의 합계 배열 만들기]");
		int[] arr1 = { 12, 32, 76, 51, 49 };
		int[] arr2 = { 34, 56, 29, 54, 21 };
		int[] arr3 = new int[5];

		for (int i = 0; i < arr1.length; i++) {
			arr3[i] = arr1[i] + arr2[i];
		}
		for (int i = 0; i < arr3.length; i++) {
			System.out.println(arr1[i]+" + "+arr2[i]+" = "+arr3[i]);
		}

		// 입력받은 값의 짝수와 홀수의 합계 계산하기, 0입력 종료
		System.out.println("[입력받은 값의 짝수와 홀수의 합계 계산하기, 0입력 종료]");
		int[] total = { 0, 0 };
		int input;
		do {
			System.out.print("숫자입력 : ");
			input = s.nextInt();
			total[input % 2] += input;
		} while (input != 0);
		System.out.println("짝수의 합 = "+total[0]+", 홀수의 합 = "+total[1]);

	}

}

<Result>

[배열의 값 출력하기]
a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 4
a[4] = 5
[배열의 값 저장후 출력하기]
a[0] = 10
a[1] = 20
a[2] = 30
a[3] = 40
a[4] = 50
[배열의 합계와 평균 구하기]
합계 = 224, 평균 = 44.8
[2개 배열의 합계 배열 만들기]
12 + 34 = 46
32 + 56 = 88
76 + 29 = 105
51 + 54 = 105
49 + 21 = 70
[입력받은 값의 짝수와 홀수의 합계 계산하기, 0입력 종료]
숫자입력 : 5
숫자입력 : 5
숫자입력 : 4
숫자입력 : 3
숫자입력 : 2
숫자입력 : 0
짝수의 합 = 6, 홀수의 합 = 13

문자열 배열 실습


import java.util.Scanner;

public class ArrayString {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner s = new Scanner(System.in);
		
		System.out.println("[과일]");
		String[] fruit = new String[] { "apple", "banana", "melon" };
		for( int i=0; i<fruit.length; i++) {
			System.out.print(fruit[i]+" ");
		}
		System.out.println();
		
		System.out.println("[책]");
		String[] book = new String[3];
		book[0] = "수학책";
		book[1] = "과학책";
		book[2] = "소설책";
		for( int i=0; i<book.length; i++) {
			System.out.print(book[i]+" ");
		}
		System.out.println();

		System.out.println("[드라마]");
		String[] drama = new String[3];
		drama[0] = new String("sunshine");
		drama[1] = new String("doctor");
		drama[2] = new String("things");
		for( int i=0; i<drama.length; i++) {
			System.out.print(drama[i]+" ");
		}
		System.out.println();
		
		// 문자열 입력받아 배열에 넣기
		String[] name = new String[5]; 
		for( int i=0; i<name.length; i++) {
			System.out.print((i+1)+"번째 이름을 입력하세요 : ");
			name[i] = s.nextLine();
		}
		System.out.println("[입력한 이름]");
		for( int i=0; i<name.length; i++) {
			System.out.print(name[i]+" ");
		}
		System.out.println();
	}

}

<Result>

[과일]
apple banana melon 
[책]
수학책 과학책 소설책 
[드라마]
sunshine doctor things 
1번째 이름을 입력하세요 : 취미
2번째 이름을 입력하세요 : 몰라
3번째 이름을 입력하세요 : 어떤걸
4번째 이름을 입력하세요 : 넣을까
5번째 이름을 입력하세요 : 나도
[입력한 이름]
취미 몰라 어떤걸 넣을까 나도 

2차원 배열 실습(Array Multi)


public class ArrayMulti {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		// 2차원 배열 정의(선언,생성,초기화) 방법
		int[][] a = new int[2][3];
		a[0][0] = 1;
		a[0][1] = 2;
		a[0][2] = 3;
		a[1][0] = 4;
		a[1][1] = 5;
		a[1][2] = 6;
		
		int[][] b = new int[][] { 
			{ 1,2,3,4 }, 
			{ 5,6,7,8 }, 
			{ 9,10,11,12} 
		};
		
		int[][] c = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} };

		System.out.println("[2차원 배열 출력]");
		for(int row=0; row<b.length; row++) {
			for(int col=0; col<b[row].length; col++) {
				System.out.print(b[row][col]+" ");
			}
			System.out.println();
		}
		
		// 2차원 가변 배열
		int[][] d = new int[2][];
		d[0] = new int[3];
		d[1] = new int[4];
		d[0][0] = 1;
		d[0][1] = 2;
		d[0][2] = 3;
		d[1][0] = 4;
		d[1][1] = 5;
		d[1][2] = 6;
		d[1][3] = 7;
		
		int[][] e = new int[2][];
		e[0] = new int[] { 1,2,3,4,5 };
		e[1] = new int[] { 1,2,3 };
		
		int[][] f = new int[][] { { 1,2,3,4,5,6 }, { 7,8,9,10 }, { 11,12,13,14,15 } };


		System.out.println("[2차원 가변 배열 출력]");
		for(int row=0; row<f.length; row++) {
			for(int col=0; col<f[row].length; col++) {
				System.out.print(f[row][col]+" ");
			}
			System.out.println();
		}

		
		
	}

}

<Result>

[2차원 배열 출력]
1 2 3 4 
5 6 7 8 
9 10 11 12 
[2차원 가변 배열 출력]
1 2 3 4 5 6 
7 8 9 10 
11 12 13 14 15 

배열기본 문법 실습

1)3행*4열의 2차원 배열을 선언하기
2)2차원 배열의 값을 키보드로 입력받기
3)행과 열의 개수만큼의 1차원 배열을 만들어 행과 열의 합계를 계산
4)2차원 배열과 행과 열의 합계 배열을 출력


import java.util.Scanner;

public class ArrayTotal {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner s = new Scanner(System.in);

		int[][] arr = new int[3][4];  	// 2차원 배열
		int[] row_sum = new int[3];		// 행 합계 1차원 배열
		int[] col_sum = new int[4]; 	// 열 합계 1차원 배열

		System.out.println("[정수를 입력하세요]");
		for(int row=0; row<arr.length; row++) {
			for(int col=0; col<arr[row].length; col++) {
				System.out.print("["+row+"]["+col+"] = ");
				arr[row][col] = s.nextInt();
				row_sum[row] +=  arr[row][col];
				col_sum[col] +=  arr[row][col];
			}
		}

		System.out.println("[2차원 배열(행합계,열합계)]");
		for(int row=0; row<arr.length; row++) {
			for(int col=0; col<arr[row].length; col++) {
				System.out.print(arr[row][col]+"   ");
			}
			System.out.println("("+row_sum[row]+")");
		}
		for(int col=0; col<col_sum.length; col++) {
			System.out.print("("+col_sum[col]+") ");
		}
	}
}

<Result>

	[정수를 입력하세요]
	[0][0] = 10
	[0][1] = 11
	[0][2] = 12
	[0][3] = 13
	[1][0] = 20
	[1][1] = 21
	[1][2] = 22
	[1][3] = 23
	[2][0] = 30
	[2][1] = 31
	[2][2] = 32
	[2][3] = 33
	[2차원 배열(행합계,열합계)]
	10   11   12   13   (46)
	20   21   22   23   (86)
	30   31   32   33   (126)
	(60) (63) (66) (69)
    ```
    

profile
DataEngineer Lee.

0개의 댓글