Java 개념

배열

ron_nie 2023. 6. 19. 21:14
728x90

1. 1차원 배열

1-1. 배열 만드는 법

// 1
int[] array = new int[4] // 요소 네개 짜리 만들기(출력하려면 순회 해야한다)

// 2
int array[] = new int[4] // 1번과 대괄호의 위치만 달라짐

// 3
int[] array = new int[]{1,2,3,4,5} // 값을 바로 넣기

// 4
int[] array = {1,2,3,4,5} // 3번보다 더 간단한 방법

만약 배열안에 문자열이 들어간다면 Stirng 타입을 사용해야한다. 혹시 문자와 숫자가 섞인 배열을 만들고 싶다면

Object[] mixedArray = new Object[5];
        
        mixedArray[0] = "Hello";
        mixedArray[1] = 123;
        mixedArray[2] = 'A';
        mixedArray[3] = 3.14;
        mixedArray[4] = "World";

이렇게 Object타입을 사용해야한다.

1-2. 값 변경하기

array[인덱스 번호] = 변경할 내용

2. 1차원 배열 순회

위에서 만든 배열을 순회하는 방법은 for 문과 foreach를 사용하는 것이다.

int[] array = new int[4];

for (int i = 0; i < array.length; i++) {
    array[i] = i + 1 ;
}

for (int number: array
     ) {
    System.out.println(number);
}

1부터 4까지 출력하는 코드이다. for을 사용해서 각각의 인덱스에 값을 지정해주고 foreach를 사용해서 출력해주면 된다.

public class test {
    public static void main(String[] args) {
        String[] array = new String[][4];

        for (int i = 0; i < array.length; i++) {
            array[i] = String.valueOf(i + 1)  ;
        }

        for (String number: array
             ) {
            System.out.println(number);
        }
    }
}

만약 Stirng 타입을 사용한다면 타입을 변경해주고 String.valuOf를 사용하여 각각 index에 들어갈 숫자의 형을 변환해줘야 한다.

3. 2차원 배열

3-1. 2차원 배열만들기

// 1
String[][] seats = new String[][]{
        {"A1", "A2", "A3", "A4", "A5"},
        {"B1", "B2", "B3", "B4", "B5"},
        {"C1", "C2", "C3", "C4", "C5"}
};

// 2
String[][] seasts = new String[10][15];

직접 만들거나 초기화만 해서 직접 요소를 집어 넣을 수도 있다.

3-2. 2차원 배열 순회하기

int[][] arr = new int[10][15];

for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr[i].length; j++) {
        arr[i][j] = i + 1;
    }
}

for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr[i].length; j++) {
        System.out.print(arr[i][j] + " ");
    }
    System.out.println();
}

2차원 배열이기 때문에 행과 열이 있다.

쉽게 생각하면 가장 위의 for은 행을 뜻하고 안의 for은 행안의 각각의 요소를 제어한다고 생각하면 된다.

3-3. 활용하기

영화 좌석표 출력하기

영화 좌석표는 보통 '영어 + 숫자' => A11 이런식으로 이루어져 있다.

필요한 것은 숫자가 담긴 배열과 영어가 담긴 배열이다. 그래서 각각의 index끼리 더해주면 된다.

 

1. 원하는 배열을 만든다

String[][] seats = new String[10][15];
String[] eng = {"A","B","C","D","E","F","G","H","I","J"};

2. 배열을 조합해서 원하는 테이블을 만든다

for (int i = 0; i < seats.length; i++) {
for (int j = 0; j < seats[i].length; j++) {
    seats[i][j] = eng[i] + (i + 1);
}

내가 필요한건 영어 + 숫자 이기 때문에 위의 배열을 순회하면서 요소들을 조합해준다

 

3. 출력한다.

for (int i = 0; i < seats.length; i++) {
for (int j = 0; j < seats[i].length; j++) {
    System.out.println(seats[i][j] + " ");
}
System.out.println();
}

 4. 전체 코드

public class test {
    public static void main(String[] args) {
        String[][] seats = new String[10][15];
        String[] eng = {"A","B","C","D","E","F","G","H","I","J"};

        for (int i = 0; i < seats.length; i++) {
            for (int j = 0; j < seats[i].length; j++) {
                seats[i][j] = eng[i] + (i + 1);
            }
        }

        for (int i = 0; i < seats.length; i++) {
            for (int j = 0; j < seats[i].length; j++) {
                System.out.println(seats[i][j] + " ");
            }
            System.out.println();
        }


    }
}

4. 추가 : 아스키 코드

아스키 코드는 미국 표준 코드이다.

char c = 'A';
System.out.println(c); // A
System.out.println((int)c); // 65

c = 'B';
System.out.println(c); // B
System.out.println((int)c); // 66

c++;
System.out.println(c); // C
System.out.println((int)c); // 67

이렇게 숫자로 표현 된다.

4-1. 응용해보기

위에서 만들었던 영화 좌석표 만들기를 아스키 코드를 이용해서 다시 만들어보자

String[] eng = {"A","B","C","D","E","F","G","H","I","J"};

char ch = 'A'; // 아스키코드 넣기

이렇게 하나씩 적기 힘드니까 아스키 코드로 하나씩 증가 시키면 되지 않을까.

public class test {
    public static void main(String[] args) {
        String[][] seats = new String[10][15];
        char ch = 'A';

        for (int i = 0; i < seats.length; i++) {
            for (int j = 0; j < seats[i].length; j++) {
                seats[i][j] = String.valueOf(ch) + (i + 1);
            } // 아스키 코드 집어넣기
            ch++
        }

        for (int i = 0; i < seats.length; i++) {
            for (int j = 0; j < seats[i].length; j++) {
                System.out.println(seats[i][j] + " ");
            }
            System.out.println();
        }


    }
}

문자열 A를 넣어주고 ++로 B, C, D가 나오도록 계속 증가 시켜주면 된다. 아스키 코드는 숫자 취급을 당하는듯 하다. 그래서 String.valueOf() 로 형변환을 해주었다. 이것에 대한것은 연구 후에 더 자세히 적도록 하겠다.

반응형