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] + " ");
}
}