
int [] arr = new int[5]
▶ 길이가 5인 정수형 배열
int 는 기본형인데
int[] arr; 는 참조형
int[] arr = {1,2,3,4,5}
길이가 5인 정수형 배열을 생성하면서 각 인덱스에 1,2,3,4,5 순서대로 저장
String[]arr={"hi","bye","hello"}
길이가 3인 문자열 배열을 생성하면서 각 인덱스에 hi, bye, hello를 순서대로 저장
arr.length 를 잘 활용하자
public void fruits() {
String [] fruits = {"딸기","복숭아","키위","사과","바나나"};
//혹은 아래와 같이 늘여써도 된다.
String [] arr = new String[5];
arr[0] = "딸기";
arr[0] = "복숭아";
arr[0] = "키위";
arr[0] = "사과";
arr[0] = "바나나";
System.out.println("1-1.");
System.out.println(fruits[4]); // 바나나만 출력
System.out.println("1-2.for문 쓰지 않고 전체 출력");
System.out.println(fruits[0]);
System.out.println(fruits[1]);
System.out.println(fruits[2]);
System.out.println(fruits[3]);
System.out.println(fruits[4]);
System.out.println("1-3. for문 이용하고 전체 출력");
for(int i=0; i<5; i++) {
System.out.println(fruits[i]);
}
}
public void array100() {
int[]arr = new int[100]; //지금은 100 칸에 0 0 0 0 ... 이 들어있는 상태
for(int i=0; i<100; i++) {
arr[i]= i+1;
}
for (int i=0; i<100; i++) {
System.out.println(arr[i]);
}
}
public void subjects() { //과목 i개와 함께 총 과목의 평균을 구하는 문제
Scanner sc = new Scanner(System.in);
String[] subject = {"국어","영어","수학","과학"};
// 배열이름.length -> 배열의 길이
int[]arr = new int[subject.length+1]; // 평균값도 구해야하니까 length+1
for(int i =0; i<subject.length;i++) {
System.out.println(subject[i]+"점수 입력 :");
arr[i] = sc.nextInt();
arr[arr.length-1] += arr[i];
}
/*System.out.println("국어점수 입력 : ");
sub[0] = sc.nextInt();
System.out.println("영어점수 입력 : ");
sub[1] = sc.nextInt();
System.out.println("수학점수 입력 : ");
sub[2] = sc.nextInt();
sub[3] = sub[0]+ sub[1]+ sub[2];*/
double avg = (double)arr[arr.length-1]/subject.length;
for(int i=0; i<4; i++) {
System.out.print(subject[i]+" : "+arr[i]+"\t");
}
System.out.print("합계 : "+arr[arr.length-1]+"\t");
System.out.printf("평균 : %.2f",avg);
public void arraytest1() {
Scanner sc = new Scanner(System.in);
int [] arr = new int [5];
for(int i=0; i <arr.length ; i++) {
System.out.print((i+1)+"번째 숫자 입력 : ");
arr[i] = sc.nextInt();
}
//버블정렬
//배열0번째 값과 배열 1번째 값을 비교해서 비열 0번째가 더 크면 자리를 바꾸는 로직
for (int i = 0; i<arr.length-1; i++) {//배열이 5개면 4개 비교 후 자리바꿈
for(int j=0; j<arr.length-1-i; j++) {
if(arr[j]> arr[j+1]) {
int tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;// 두 배열이 서로 1:1로 대입 자리바꾸려면 tmp가 있어야한다.
}
}
}
for(int i=0; i<arr.length; i++) {
System.out.print(arr[i]+"\t");
}
}

- 버블 정렬
1열부터 아래로 두 개의 숫자를 비교하면서 더 큰 수를 뒤로 보내준다. if arr[0]>arr[1] 경우, arr[0]에 arr[1]을 넣어주고 arr[1]에 arr[0]을 넣어준다. 그런데 이 때 두 값이 1:1로 넣어지지가 않으므로 tmp 임시 변수를 만들어주면서 바꿔나간다.
그 다음으로 두번째로 내려가면 마지막 열에 5는 고정이고 또 바꿔주면 된다. 첫번째 과정보다 한 개 줄어들었다. 5가 고정이 되어있으므로.

import java.util.Scanner;
public class ArrayPractice {
public void hotel() {
int[] rooms = new int[10]; // 10칸모두 0으로 세팅
// 0이면 빈 방, 1이면 손님있는 방
Scanner sc = new Scanner(System.in);
boolean handler = true;
while (handler) {
System.out.println("-----호텔 관리 프로그램 v1.0-----");
System.out.println("1. 입실 2.퇴실 3.방보기 4.종료");
System.out.print("선택 > ");
int menusel = sc.nextInt();
if(menusel<1 || menusel>4) {
System.out.println("다시입력");
continue;
}
switch (menusel) {
case 1:
System.out.println("몇번방에 입실하시겠습니까?");
int roomin = sc.nextInt();
if (rooms[roomin - 1] == 0) {
rooms[roomin - 1] = 1;
} else {
System.out.println(roomin + "번 방에는 이미 손님이 있습니다.");
}
break;// switch문을 나가서 while문으로 들어간다.
case 2:
menusel = 2;
System.out.println("몇번방에서 퇴실하시겠습니까?");
int roomout = sc.nextInt();
if (rooms[roomout - 1] == 1) {
rooms[roomout - 1] = 0;
} else {
System.out.println(roomout + "번 방은 이미 비어있습니다.");
}
break;
case 3:
for (int i = 0; i < rooms.length; i++) {
if (rooms[i] == 0) {
System.out.println((i + 1) + "번방이 현재 비어있습니다.");
} else {
System.out.println((i + 1) + "번 방에는 현재 손님이 있습니다.");
}
}
break;// switch문을 나가서 while문으로 들어간다.
case 4:
handler = false; // 무한반복 해제될 수 있게
System.out.println("종료");
break;// switch문을 나가서 while문으로 들어간다.
}// switch end
} // while end
}// method end
} // class end
같은 호텔방 관리를 boolean 논리형으로 코딩하면 아래와 같다.
public void hotel2() {
Scanner sc = new Scanner(System.in);
boolean[]rooms = new boolean[10];
//false로 모두 세팅된 상태
//false면 빈 방, true면 손님있는 방
boolean bool = true;//기능을 정지시키는 매개변수
while(bool) {
System.out.println("-----------호텔관리프로그램--------------");
System.out.println("1.입실 2.퇴실 3.방보기 4.종료");
int sel = sc.nextInt();
switch(sel) {
case 1:
System.out.println("몇번방에 입실하시겠습니까?");
int enterNo = sc.nextInt();
if(rooms[enterNo-1]) {
//if(rooms[enterNo-1]==true){ 와 같은 말
System.out.println(enterNo+"방에는 현재 손님이 있습니다.");
}else {
rooms[enterNo-1] = true;
}
break;
case 2:
System.out.println("몇번방에 퇴실하시겠습니까?");
int exitNo = sc.nextInt();
if(!rooms[exitNo-1]) {
//if(rooms[exitNo-1]==false){ 와 같은 말
System.out.println(exitNo+"방은 비어있습니다.");
}else {
rooms[exitNo-1] = false;
}
break;
case 3:
for(int i = 0; i<rooms.length;i++) {
if(rooms[i]) { //if(true == true => true 이므로 rooms[i]=true라고 적어줄 필요없다.
System.out.println((i+1)+"번 방에는 손님이 있습니다.");
}else {
System.out.println((i+1)+"번 방은 빈방입니다.");
}
}//배열 반복문 종료
break;
case 4:
bool = false;
System.out.println("Bye~");
break;
}//메뉴선택에 따른 switch end
}// 젠처메뉴 반복 while(bool) end
} //method end