배열

- 동일한 자료형의 데이터를 여러 개 저장하는 공간 (기존에 멤버변수는 한 가지 데이터만 사용 가능했으며, 이러한 불편함을 해결하는 방법)

- 연속적인 공간을 할당받아 인덱스 값을 통하여 순차적 접근이 가능

 

 

1. 참조형 변수 선언 (선언 방식은 2가지 이지만, 첫 번째 방식을 주로 사용)

- null은 잠초형 변수의 디폴트 값이다

1. 자료형 [] 변수명;
int[] arr;

2. 자료형 변수명[];
int arr[];

 

2. 인스턴스 공간 선언

- 모든 인스턴스 공간은 new를 통해 선언된다

1. new 자료형[개수];
new int[5];

2. new 자료형[] {데이터, 데이터, ...);
new int[] {1, 2, 3, 4, 5};

 

3. 선언과 동시에 초기화

1. 자료형[] 변수명 = new 자료형[개수];
int[] arr = new int[5];

2. 자료형[] 변수명 = {문자열 데이터};
String[] arrayStr = {"a", "b", "c", "d", "e"};

 

4. 호출

- 배열의 요소 공간을 불러오는 작업이며, 이는 인덱스 값을 통해 호출 가능

- 초기화한 배열은 기본적으로 for문을 통해 사용을 한다

변수명[인덱스]
arr[0]

 

public class TestMySelf {

	public static void main(String[] args) {

		String a = "a";
		int b = 1;
		
		// [1]
		// - array 배열 >> [ 0,1,2,3,4,5,6,7,8,9 ]
		// - 변수 i의 시작은 0이고 array 변수의 길이만큼(10개)의 수(인덱스)를 출력
		int[] array = new int[10];	// array 변수에 0~9 까지의 수를 담고 있음
		for(int i = 0; i < array.length; i++) {
//		for(int i = 1; i < array.length; i+=2) {		// array에 저장된 10개의 수를 i에 넣어 원하는 숫자를 출력하는 방법
//		for(int i = 2; i < array.length; i+=4) {
			System.out.println(i);
		}
		
		// [2]
		// - array2 배열에 1,3,5,7,9 라는 선별적인 데이터를 저장
		// - 배열의 길이만큼 인덱스 출력
//		int[] array2 = {1,3,5,7,9};
//		for(int i = 0; i < array2.length; i++) {
//			System.out.println(i);
//		}


		// [3]
		// - array3 배열에 저장한 데이터를 출력
//		int[] array3 = {1,3,5,7,9};
//		for(int i = 0; i < array3.length; i++) {		// i라는 변수를 0부터 array3 배열 길이만큼 1씩 증가
////		for(int i = 0; i < array3.length; i+=2) {	// i라는 변수를 0부터 array3 배열 길이만큼 2씩 증가
//			System.out.println(array3[i]);		// array3에 0부터 배열 길이만큼 1씩 증가한 인덱스에 있는 데이터를 출력
//		}

		
		// [4]
		// - arrayStr 배열에 문자열 a,b,c,d,e 저장 및 출력
//		String[] arrayStr = {"a", "b", "c", "d", "e"};
//		for(int i = 0; i < arrayStr.length; i++) {
//			System.out.print(i + "번 인덱스의 데이터 : ");
//			System.out.println(arrayStr[i]);
////			System.out.println(i + "번 인덱스의 데이터 : " + arrayStr[i]);
//		}
			
	}
}

 

 

 

 

 

 

문제 (3개) 

 

주사위를 10번 던진 결과를 저장하려고 합니다
배열을 이용하여 저장을 구현하시고 아래의 결과를 출력하세요
[1] 전체 주사위 기록을 출력
   (예) 1번째 : 5 , 2번째 : 2, ...
[2] 짝수 주사위 기록을 출력
[3] 주사위 값들의 합계 출력

 

선택장애 치료 프로그램
1. 사용자에게 항목 개수를 입력받기
2. 그 만큼의 항목을 입력받아서 배열에 저장
3. 위 두가지가 완료되면 무작위로 1가지를 추첨하여 화면에 출력
(예)  
항목 갯수 입력 : 5
항목 : 김밥

항목 : 라면
항목 : 떡볶이
항목 : 자장면
항목 : 순대국
추첨중입니다....
추첨된 항목은 떡볶이 입니다

 

주사위를 1000번 던져서 각각의 눈금이 나온 횟수를 세보려고 합니다
아래와 같이 결과가 나올 수 있도록 배열을 이용한 적절한 코드를 구현

(예)   
'1' 이 나온 횟수 : 170번
'2' 이 나온 횟수 : 180번
'3' 이 나온 횟수 : 205번
...
'6' 이 나온 횟수 : 155번

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

답 
int[] arr = new int[10];						// 10개의 데이터를 저장하는 배열
		
		//[1]
//		for(int i = 1; i < arr.length + 1; i++) {		// 1번째 ~ 10번째까지 하나씩 호출
//			arr[i] = (int)(Math.random() * 6) + 1;		// 주사위 랜덤 숫자
//			System.out.println(i + "번째 \t: " + arr[i]);
//		}
		
		
		//[2]
//		for(int i = 0; i < arr.length; i++) {
//			arr[i] = (int)(Math.random() * 6) + 1;
//		
//			if(arr[i] % 2 == 0) {						// 주사위가 짝수 일 때
//				System.out.println(i + 1 + "번째 \t: " + arr[i]);
//			}
//		}
		
		
		//[3]
		int sum = 0;

		for(int i = 1; i < arr.length + 1; i++) {		// 1부터 10까지 하나씩 호출
			int dice = (int)(Math.random() * 6) + 1; 
			System.out.println(i + "번째 \t: " + dice);
			sum += dice;								// sum에 dice를 누적하여 합산
		}
		
		System.out.println("주사위 총합 : " + sum);
		
	}
	
}

 

Scanner sc = new Scanner(System.in);

	System.out.print("옵션 메뉴 개수 : ");		// 메뉴 개수 받기
	int su = sc.nextInt();
	
	String[] menu = new String[su];			// 메뉴 개수만큼 배열 길이 설정
	sc.nextLine();							// 문자열 입력 받아 버퍼에 저장하는 코드

	for(int i = 0; i < menu.length; i++) {	// 메뉴 입력받아 저장
		System.out.print("옵션 메뉴 : ");
		menu[i] = sc.nextLine();
	}
	
	// 임의로 추가한 메소드 (없어도 됨)
	System.out.println("추첨중");
	for(int i = 0; i < 3; i++) {
		Thread.sleep(1000);					// 1초 설정, main 메소드에 throws 추가
		System.out.println(".");
	}
	
	int ran = (int)(Math.random() * su);	// su에 저장된 수 안에서만 랜덤 돌리기
	System.out.println("추첨된 메뉴는 " + menu[ran] + "입니다");
	}
}

 

		int[] arr = new int[6];
		
		for(int i = 0; i < 1000; i++) {				// 1000회 던지기
			int dice = (int)(Math.random() * 6);	// 주사위 (0부터 5까지)
			arr[dice]++;
		}
		
		for(int i = 0; i < arr.length; i++) {
			System.out.println(i + 1 + " 이(가) 나온 횟수 : " + arr[i] + "번");
		}
		
	}
}

 

 

 


 

코딩을 시작하는 많은 사람들의 1차적으로 느끼는 벽이 '배열' 이다.

나도 어려웠고, 블로그를 쓰면서 다시 돌려봤지만 아직도 어려운 것 같다.

그치만, 뭐 어쩌겠어 그냥 해야지

 

 

배열의 경우, 이번 글에서 사용된 '일반 배열' 외에도 '이차원 배열', '다차원 배열' 등이 존재한다.

 

다음 글엔 다양한 문제들을 통해 배열을 더 깊이 이해하는 시간을 가져보겠다

+ Recent posts