본문 바로가기
JAVA/JAVA복습(멘토씨리즈 자바)

[JAVA복습] 06. 배열

by ssunooo 2024. 7. 18.

 

1. 핵심 정리

 

배열이란?

같은타입의 데이터를 여러 개 저장할 수 있는 자료 구조

 

배열의 선언


1
2
3
4
5
6
7
8
9
 
        int[] arr=new int[크기]; 또는 int arr[]=new int[크기];
        int[] arr= {1,2,3,4,5};
 
cs

 

index란?

생성된 배열의 위치 값, index는 0부터 시작

 

배열의 길이

배열이 가지고 있는 length값으로 배열의 길이를 알 수 있다

 

Arrays

배열을 지원하는 클래스로 배열과 관련된 다양한 기능을 가지고 있다

 

다차원 배열

배열은 다차원 배열을 만들 수 있다

다차원 배열 중에서 행렬 구조로 사용되는 2차원 배열이 주로 사용

 

다차원(2차원) 배열의 선언


1
2
3
4
5
6
7
8
9
 
        int[][]arr=new int[크기][크기];
        int[][]arr= {{1,2},{3,4},{5,6}};
 
cs

 

향상된 for문

JDK 1.5 이후부터 새로운 for문인 향상된 for문 사용 가능


1
2
3
4
5
6
7
8
9
 
        for(int 2.num : 1.score) {
        //데이터타입 변수명   반복대상
            3. 실행코드
 
 
cs

1 → 반복요소가 있을 경우 → 2 → 3

1 → 반복요소가 없을 경우 → for문 탈출


 


 

2. 응용 문제

 

Q1. 다음 중 배열을 생성하는 방법으로 틀린 것은 무엇일까요?

  1. int[] arr=new int[4];
  2. int arr[]=new int[4];
  3. int arr[]={1,2,3,5};
  4. int[][] arr=new int[][4];

A1. 4

다차원 배열의 경우 int[][] arr=new int[크기][크기]; 의 형태여야 하는데

int[][] arr=new int[][크기]; 로 크기를 입력받지 못했다.

 


 

Q2. 다음 코드의 빈칸을 완성해 주어진 배열에서 짝수만 더하여 합을 구해보세요.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package section06;
 
public class ArrayExample {
    public static void main(String[] args) {
        
        int[] arr= {1,2,3,4,5,6,7,8,9,10};
        int sum=0;
        
 
           
        }
        System.out.println("짝수들의 합 : "+sum);
    }
}
cs

int sum=0

이후에 반복문을 사용해서 짝수들의 합을 만드는 메인코드를 완성했다.


A2.
for(int i=0;i<arr.length;i++) { // arr배열의 길이만큼 반복해서
            if(arr[i]%2==0) { // 데이터값이 짝수라면
                sum+=arr[i]; // sum변수에 더한다.

 


 

Q3. 철수는 동생과 카드 게임을 했습니다. 카드 게임에 사용된 카드는 중복되는 숫자없이 총 10장입니다.

       배열과 핸덤 함수를 이용해 철수가 게임에 사용했던 카드를 구해보세요.

       카드에 적힌 숫자는 1부터 10이며, 카드는 섞여있으므로 순서는 상관없습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package section06;
 
import java.util.Arrays;
import java.util.Random;
 
public class Test01 {
    public static void main(String[] args) {
        Random rand = new Random(); // 카드 랜덤함수
 
        int card = 5// 카드를 받는수
 
        int shuffle[] = new int[card * 2]; // 섞은 카드 배열
        for (int i = 0; i < shuffle.length; i++) { // 카드배열길이만큼 반복 = 총 10장 뽑아야하니까
            int cardNum = rand.nextInt(10+ 1;
            
            for (int j = 0; j < i; j++) {// i-1만큼 반복
                
                if (shuffle[j] == cardNum) { // cardNum이 배열에있다면
                    cardNum = rand.nextInt(10+ 1// 다시 랜덤함수 쓰고
                    j=-1// 반복문 다시 처음부터 하려면 -1을 해야한다
                }
            }
            shuffle[i] = cardNum; // 중복이 없으면 배열에 숫자 저장
        }
        
        int user[]=new int[card]; // 철수 배열 - 5장씩 동생과 카드를 나눠가진다.
        int userBro[]=new int[card]; // 동생 배열
        
        for(int i=0;i<card;i++) { // 5장씩 카드를 나눠가지는 행위
            user[i]=shuffle[i];    
        }
        for(int a=card;a<10;a++) { // 5장씩 카드를 나눠가지는 행위
            userBro[a-5]=shuffle[a];
        }
        
        
        System.out.println("철수 : "+Arrays.toString(user));
        System.out.println("동생 : "+Arrays.toString(userBro));
    }
}
cs

 

'JAVA > JAVA복습(멘토씨리즈 자바)' 카테고리의 다른 글

[JAVA복습] 08. 메서드  (0) 2024.07.20
[JAVA복습] 07. 클래스  (0) 2024.07.18
[JAVA복습] 05. 제어문(2)  (0) 2024.07.16
[JAVA복습] 04. 제어문(1)  (0) 2024.07.16
[JAVA복습] 03. 연산자  (0) 2024.07.15