본문 바로가기
JAVA/배열

배열 예제(5)

by pms93 2022. 7. 21.
package arrays;

import java.util.Scanner;

public class Quiz10 {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		int bufSize = 3, dataInputCnt = 0; // bufSize - 배열의 크기, dataInputCnt - 현재 배열에 저장된 데이터 갯수 저장용도
		int array[] = new int[bufSize];

		while (true) {
			for (int cnt = bufSize - 3; cnt < array.length; cnt++) {
				// cnt = bufSize - 3;
				// -> 이전까지 사용된 저장공간 그 이후부터 사용하기 위함.
				try {
					System.out.printf("현재 배열의 길이 : %d\n정수데이터 입력 : ", bufSize);
					array[cnt] = sc.nextInt();
				} catch (Exception e) {
					System.out.println("잘못된 형식의 입력입니다. 다시 입력하세요...");
					sc.nextLine();
					cnt--;
					continue;
				}

				dataInputCnt++; // 다음 반복문 실행 시 저장된 데이터 갯수를 증가시키기 위함
				
				// 저장된 데이터의 갯수만큼만 출력(dataInputCnt를 통해서 for문 통제)
				for (int cnt2 = 0; cnt2 < dataInputCnt; cnt2++)
					System.out.print(array[cnt2] + " ");

				System.out.println();
			}

			// 기존 배열의 크기를 늘리려면 새로 선언을 해줘야 한다.
			// 이에 따라 기존 배열의 주소값을 잃게 되면서 데이터 또한 잃게 된다.
			// 1) 참조배열을 임시로 선언하여 기존 배열의 주소값을 넘겨주는 방식
			// 2) 기존 배열과 같은 크기의 임시 배열을 선언하여 데이터를 잠시 옮겨 보관하는 방식
			int arrayTmp[] = new int[bufSize];
			for (int cnt = 0; cnt < array.length; cnt++)
				arrayTmp[cnt] = array[cnt];

			bufSize += 3;
			array = new int[bufSize];

			for (int cnt = 0; cnt < bufSize - 3; cnt++)
				array[cnt] = arrayTmp[cnt];
		}
		
		

	}
}

'JAVA > 배열' 카테고리의 다른 글

배열 예제(4)  (0) 2022.07.21
배열 예제(3)  (0) 2022.07.20
배열 예제(2)  (0) 2022.07.20
배열 예제(1)  (0) 2022.07.20
Array_다차원배열(3)  (0) 2022.07.20