배열 선언
public class ArrayEx01 {
public static void main(String[] args) {
int arr1[] = new int[10];
int[] arr2 = new int[20];
int arr3[];
arr3 = new int[30];
int arr4[][];
arr4 = new int[5][5];
}
}
배열 출력 Array.toString(arr)
import java.util.Arrays;
public class ArrayEx02 { //배열 출력 Arrays.toString()
public static void main(String[] args) {
int arr[] = new int[5];
for(int i=0; i<5; i++)
arr[i] = i;
System.out.println(Arrays.toString(arr));
}
}
배열 복사 System.arraycopy()
주로 2차원 배열에서 1차원 배열로 구조 변경 시, 또는 리스트 구조를 배열로 변경 시 사용
System.arraycopy( Object src, int srcPos, Object dest, int destPos, int length )
- Object src: 복사 대상 (원본)
- int srcPos: 읽어올 src의 위치
- Object dest: 목표 대상(복사할 객체)
- int destPos: 목표대상의 쓸 위치
- int length: 원본으로부터 복사하는 데이터의 길이
import java.util.Arrays;
public class ArrayEx03 { //배열 복사 arraycopy()
public static void main(String[] args) {
int arr1[] = new int[5];
int arr2[] = new int[5];
for(int i=0; i<5; i++)
arr1[i] = i;
System.arraycopy(arr1, 0, arr2, 0, 5);
System.out.println(Arrays.toString(arr2));
}
}
배열 응용 문제
2차원 배열을 이용하여 숙박 프로그램을 만들어보자
public class ArrayEx04 {
public static void main(String[] args) {
int room[][] = new int[4][4];
int operator = 0;
int roomNumber = 0;
boolean isExitProgram = false;
Scanner scanner = new Scanner(System.in);
final int ENTER_ROOM = 1;
final int EXIT_ROOM = 2;
final int SHOW_ROOM = 3;
final int EXIT_PROGRAM = 4;
// 숙박실 개수 세기
int roomCount = 0;
// 배열 초기화 진행
for(int i=0; i<4; i++)
room[0][i] = 0;
// 초기화된 배열의 첫번째 원소를 복사하여
// 나머지 원소에 복사 진행
for(int i=1; i<4; i++)
System.arraycopy(room[0], 0, room[i], 0, 4);
// 숙박실 개수 세기
for(int i=0; i<4; i++)
roomCount += room[i].length;
// 숙박실 개수 출력
System.out.println("저희 호텔의 최대 숙박실 수는 " + roomCount + "입니다.");
while(!isExitProgram) {
System.out.println();
System.out.println("1. 숙박");
System.out.println("2. 퇴실");
System.out.println("3. 조회");
System.out.println("4. 종료");
System.out.print("작업을 선택하시오(1~4):");
operator = scanner.nextInt();
switch(operator) {
case ENTER_ROOM:
System.out.print("숙박호실 입력:");
roomNumber = scanner.nextInt();
if(room[roomNumber/100-1][roomNumber%100-1]==1)
System.out.println("이미 예약됨.");
else room[roomNumber/100-1][roomNumber%100-1] = 1;
break;
case EXIT_ROOM:
System.out.print("퇴실호실 입력:");
roomNumber = scanner.nextInt();
if(room[roomNumber/100-1][roomNumber%100-1]==0)
System.out.println("빈방임.");
else room[roomNumber/100-1][roomNumber%100-1] = 0;
break;
case SHOW_ROOM:
for(int floor = 0; floor<4; floor++)
System.out.println(Arrays.toString(room[floor]));
// System.out.println("□ : 숙박가능, ■ : 숙박불가");
// for(int floor=0; floor<4; floor++) {
// for(int _room=0; _room<4; _room++) {
// if(room[floor][_room] == 0)
// System.out.print("□ ");
// else System.out.print("■ ");
// }
// System.out.println();
// }
break;
case EXIT_PROGRAM:
System.out.println("프로그램을 종료합니다.");
isExitProgram = true;
break;
}
}
}
}
'Java' 카테고리의 다른 글
[Java] Class (0) | 2022.10.22 |
---|---|
[Java] String Buffer, Tokenizer, Scanner (0) | 2022.10.22 |
[Java] 생성자 (Constructor) (0) | 2022.10.22 |
[Java] Static (0) | 2022.10.22 |
[Java] 상속 (0) | 2022.10.22 |