KH7일차

2022. 6. 29. 17:34코딩/Java

	public void motel() {
		Scanner sc = new Scanner(System.in);
		// 정수 배열 선언 길이 10
		int[] rooms = new int[10];
		//1과 0만 사용시 boolean 배열이 더 유용하다.false 빈방 true 손님있는방
		// 배열각 인덱스가 방을 의미
		// 0인경우 비어있는방
		// 1인경우 손님이 있는 방
		while (true) {
			System.out.println("1.입실  2.퇴실  3.방보기  4.종료");
			System.out.print("선택 > ");
			int num1 = sc.nextInt();
			if (num1 == 1) {
				System.out.print("몇번방에 입실하시겠습니까? : ");
				int num2 = sc.nextInt();
				if (rooms[num2 - 1] == 0) {
					rooms[num2 - 1] = 1;
				} else if (rooms[num2 - 1] == 1) {
					System.out.println(num2 + "방에는 손님이 있습니다.");
				}
			} else if (num1 == 2) {
				System.out.println("몇번방에서 퇴실하시겠습니까? : ");
				int num3 = sc.nextInt();
				if (rooms[num3 - 1] == 1) {
					System.out.println(num3 + "번 방에서 퇴실하셨습니다.");
					rooms[num3 - 1] = 0;
				} else if (rooms[num3 - 1] == 0) {
					System.out.println(num3 + "번 방은 현재 빈방입니다.");
				}
			} else if (num1 == 3) {
				for (int i = 0; i < 10; i++) {
					if (rooms[i] == 0) {
						System.out.println((i + 1) + "번방이 비어있습니다.");
					} else if (rooms[i] == 1) {
						System.out.println((i + 1) + "방에 손님이 있습니다.");
					}
				}
			} else if (num1 == 4) {
				break;
			}
		}
	}

2차원 배열

package kh.java.func;

public class ArrayTest2 {// 얕은복사
	public void test1() {
		int[] arr1 = { 1, 2, 3, 4, 5 };
		System.out.println(arr1[2]);
		System.out.println(arr1[3]);
		int[] arr2 = arr1;
		System.out.println(arr2[4]);
		arr1[4] = 100;
		System.out.println(arr1[4]);
		System.out.println(arr2[4]);
		arr2[0] = 10;
		System.out.println(arr2[0]);
		System.out.println(arr2[0]);
	}

	public void test2() {// 깊은복사
		int[] arr1 = { 1, 2, 3, 4, 5, 6 };
		// 1)배열을 생성해서 제어문을 통한 직접 복사
		// 1-1) 원본배열과 동일한 길이의 배열 생성
		int[] arr2 = new int[arr1.length];
		// 1-2)for문을 통한 데이터 복사
		for (int i = 0; i < arr1.length; i++) {
			arr2[i] = arr1[i];
		}
		arr1[2] = 100;
		arr2[3] = 200;
		for (int i = 0; i < arr1.length; i++) {
			System.out.print(arr1[i] + " ");
		}

		System.out.println();
		for (int i = 0; i < arr1.length; i++) {
			System.out.print(arr2[i] + " ");
		}
		System.out.println();
		// 2)System.arraycopy 사용 (배열의 일부 데이터만 복사 가능)
		// 2-1)원본배열과 길이가 같은 배열 선언
		int[] arr3 = new int[arr1.length];
		// System.arraycopy(괄호안에 5개의값 설정
		// (원본배열,원본배열 복사 시작할 위치,데이터가 복사될 배열,
		// 데이터가 복사될 배열중 데이터가 들어갈 시작 위치,
		// 복사할 길이)
		System.arraycopy(arr1, 2, arr3, 1, 2);
		for (int i = 0; i < arr3.length; i++) {
			System.out.print(arr3[i] + " ");
		}
		System.out.println();
		// arr4배열생성
		int[] arr4 = new int[arr1.length];
		System.arraycopy(arr2, 2, arr4, 2, 4);
		for (int i = 0; i < arr4.length; i++) {
			System.out.print(arr4[i] + " ");
		}
		System.out.println();
		// 3) clone();
		int[] arr5 = arr1.clone();
		for (int i = 0; i < arr5.length; i++) {
			System.out.print(arr5[i] + " ");
		}
		System.out.println();
	}

	public void test3() {
		// 2차원배열생성
		int[][] arr = new int[2][3];
		int k = 1;
		arr[0][0] = k++;
		arr[0][1] = k++;
		arr[0][2] = k++;
		arr[1][0] = k++;
		arr[1][1] = k++;
		arr[1][2] = k++;
		for(int i=0; i<arr.length; i++) {
			for(int j=0; j<3; j++) {
				System.out.print(arr[i][j]+" ");
			}
			System.out.println();
		}
//		int[][] arr1 = { { 1, 2, 3 }, { 4, 5, 6 } };
//		int[][] arr2 = new int[2][3];
//		int num = 1;
//		for (int i = 0; i < 2; i++) {
//			for (int j = 0; j < 3; j++) {
//				arr2[i][j] = num++;
//			}
//		}
//		System.out.print(arr[0][0] + " ");
//		System.out.print(arr[0][1] + " ");
//		System.out.print(arr[0][2] + " ");
//		System.out.println();
//		System.out.print(arr[1][0] + " ");
//		System.out.print(arr[1][1] + " ");
//		System.out.print(arr[1][2] + " ");
	}

}

'코딩 > Java' 카테고리의 다른 글

KH9일차  (0) 2022.06.30
KH8일차  (0) 2022.06.29
kh6일차(배열)  (0) 2022.06.27
kh5일차  (0) 2022.06.24
kh4일차  (0) 2022.06.23