Java

[Java] 배열(array) - 선언, 데이터 할당/대입, 배열의 덧셈, 반복문/Scanner 활용

소댓 2023. 3. 8. 18:25

[ 배열 ]

 

* 배열이란? 

- reference type > array

- 자료형 []   참조변수명;

  자료형     참조변수명 [];

 

- 참조변수명 = new 자료형[5];

  int[] m;

  m = new int [5]

 

- stack에 m이라는 공간이 할당됨 > 그 공간에 10이라는 값이 저장

- heap이라는 영역에 새롭게 int 크기로 세 칸의 연속된 공간의 변수를 만듦
  실제 할당되는 메모리 주소(참조값) -> stack의 'm'에 할당됨
  아래부터 m[0], m[1], m[2]

 

 

* 배열의 선언 및 데이터 대입 / 할당

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package day04;
 
public class ArrayEx02 {
    public static void main(String[] args) {
        
        // int 타입 배열 5칸 짜리 c 배열
//        int i;
        int[] c; // int c[];
        
        // System.out.println("c : " + c); // error : 초기화 안해서
        
        // 5개의 배열 요소를 갖도록 하자.
        c = new int[5];
        
        // 자료형의 기본값 : 0으로 
        // boolean : false
        // String : null
        // float : 0.0f
        // double : 0.0d
        
        System.out.println("c[4] : " + c[4]);
        
        System.out.println("c : " + c);
        // 배열의 길이
        System.out.println("배열의 길이 : " + c.length);
        
//        c[0] = 5;
//        c[1] = 10;
//        c[2] = 15;
//        c[3] = 20;
//        c[4] = 25;
        
        for(int i = 0; i <c.length; i++) {
            c[i] = (i+1)*5;
            System.out.println("c["+i+"] : "+ c[i]);
        }
        System.out.println("-----------------------");
        
        // 정수형 변수 d를 선언
        // 3칸짜리 배열로 선언
        int[] d = new int [3];
        // 100, 200, 300을 대입
        // 출력
        for(int i = 0; i<d.length;i++) {
            d[i] = (i+1* 100;
            System.out.println("d["+i+"] : " + d[i]);
        }
        System.out.println("-----------------------");
        
        
        // int형 배열 m을 선언 후 29, 16, 99 데이터를 할당
        int[] m = {291699};
        // 반복문으로 출력
        for(int i = 0; i<m.length; i++) {
            System.out.println("m["+i+"] : "+ m[i]);
        }
        
        
    }
}
 
cs

 

 

* 배열의 선언 및 배열 간 덧셈

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package day05;
 
public class ArrayEx03 {
 
    public static void main(String[] args) {
 
        int[] a = { 1050304060 };
        
        int[] b = { 201090120160};
        
        // int c 배열 5칸짜리
        
        int[] c = new int[5];
 
        // c 배열에 a+b 대입 : 30 60 120 160 220
        // c 배열 요소를 출력
        for(int i = 0; i<c.length; i++) {
        c[i] = a[i] + b[i];
        System.out.println("c["+i+"] : " + c[i]);
        }
        
    }
 
}
cs

 

 

*  char 배열 선언 및 출력

 

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
package day05;
 
public class ArrayEx04 {
 
    public static void main(String[] args) {
 
        // 1. char 배열
        char[] ch = {'j''a''v''a'' ''w''o''r''l''d'};
        
        // 2. 배열 안에 있는 요소를 하나씩 꺼내서 출력
        
        // println ==> print
        for(int i = 0; i<ch.length; i++) {
            System.out.print(ch[i]);
        }
        System.out.println("\n-----------------");
        
        // 역순으로 출력
        // dlrow avaj
        // System.out.println(ch[9]);
        
        for(int i = (ch.length-1); i>=0; i--) {
            System.out.print(ch[i]);
        }
        System.out.println("\n-----------------");
        
        // String은 클래스
        
        String str = "java world";
        System.out.println(str);
        
    }
 
}
cs

 

 

 

* 2차원 배열 선언 및 데이터 대입 / 할당

 

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package day05;
 
public class ArrayEx05 {
 
    public static void main(String[] args) {
 
        // 2차원 배열
        
        // int[][] m = new int [행][열];
        
        // int형 2차원 배열 m 선언 후에 3행 2열 배열 할당
        
        int[][] m = new int[3][2];
        
        System.out.println("m : " + m);
        
        System.out.println("m.length : " + m.length);
        
        System.out.println("m[0] : " + m[0]);
        
        System.out.println("m[0].length : " + m[0].length);
        
        System.out.println("m[0][0] : " + m[0][0]);
        
        System.out.println("--------------------------");
        
    
        int cnt = 0;
        for(int j = 0; j<3; j++) {
        for(int i = 0; i<2; i++) {
            cnt++;
            m[j][i] = cnt;
            System.out.println("m["+j+"]["+i+"] => "+ m[j][i]);
        }        
        }
//        m[0][0] = 1;
//        m[0][1] = 2;
//        
//        for(int i = 0; i<2; i++) {
//            cnt++;
//            m[1][i] = cnt;
//        }        
//        m[1][0] = 3;
//        m[1][1] = 4;
//        
//        for(int i = 0; i<2; i++) {
//            cnt++;
//            m[2][i] = cnt;
//        }
//        m[2][0] = 5;
//        m[2][1] = 6;
        
//        System.out.println("m[0][0] : " + m[0][0]);
//        System.out.println("m[0][1] : " + m[0][1]);
//        System.out.println("m[1][0] : " + m[1][0]);
//        System.out.println("m[1][1] : " + m[1][1]);
//        System.out.println("m[2][0] : " + m[2][0]);
//        System.out.println("m[2][1] : " + m[2][1]);
        
    }
 
}
cs

 

 

* int 형 배열과 2차원 배열에 데이터 입력 및 출력 > for문과 length 활용

 

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package day05;
 
public class ArrayEx06 {
    public static void main(String[] args) {
        
        // int형 배열 n에 데이터 입력하고 화면에 출력
        
        // 14, 2, 32, 12 < ==
        
        // int[] n = new int[4];
        // n[0] = 14;
        // n[1] = 2;
        // n[2] = 32;
        // n[3] = 12;
        
        int[] n = {1423212};
        for(int i = 0; i<n.length; i++) {
            System.out.println("n["+i+"] : " + n[i]);
        }
        System.out.println("----------------");
        
        int[][] m = {
            // 한 행씩
                {000},
                {0121325},
                {02438},
                {0278}
        };
        
        for(int j=0; j < m.length; j++) {
        for(int i=0; i < m[j].length ;i++) {
            System.out.println("m["+j+"]["+i+"] : " + m[j][i]);
        }
        }
        
//        // m[0]행 출력
//        for(int i = 0; i < m[0].length; i++) {
//            System.out.println("m[0]["+i+"] : " + m[0][i]);
//        }
//        
//        // m[1]행 출력
//        for(int i = 0; i < m[1].length; i++) {
//            System.out.println("m[1]["+i+"] : " + m[1][i]);
//        }
//        
//        // m[2]행 출력
//        for(int i = 0; i < m[2].length; i++) {
//            System.out.println("m[2]["+i+"] : " + m[2][i]);
//        }
//        
//        // m[3]행 출력
//        for(int i = 0; i < m[3].length; i++) {
//            System.out.println("m[3]["+i+"] : " + m[3][i]);
//        }
        
    }
}
 
cs

 

 


[ 실습 ]

 

* 두 2차원 배열에 대한 덧셈

 

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
package day05;
// 두 행렬에 대한 덧셈을 구하시오.
public class Day05Q001 {
 
    public static void main(String[] args) {
        
        int[][] m = {
                {323},
                {456},
                {149}
        };
        
        int[][] n = {
                {187},
                {644},
                {323}
        };
        
        int [][] c = new int [3][3];
        for(int j=0; j<=2; j++) {
        for(int i=0; i<=2; i++) {
            c[j][i] = m[j][i] + n[j][i];
            System.out.println("c["+j+"]["+i+"} : " +c[j][i]);
        }
        }
    }
 
}
cs

 

 

* 반복문(for문)을 통한 5행 5열 짜리 배열 출력

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package day05;
// 반복문을 통해 5행 5열 짜리 배열 출력
public class Day05Q002 {
 
    public static void main(String[] args) {
        
        int cnt = 0;
        int[][] m = new int [5][5];
        for(int j = 0; j<m.length; j++) {
        for(int i = 0; i<m[j].length; i++) {
            cnt++;
            m[j][i] = cnt;
            System.out.print(m[j][i]+"\t");
        }
        System.out.println();
        }
    }
 
}
cs

 

* 사용자로부터 국어 성적 10개를 입력 받아(Scanner) 총점과 평균을 출력 >  배열 활용

 

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
package day05;
import java.util.Scanner;
// 사용자로부터 국어 성적 10개를 입력 받아
// 총점과 평균을 출력하는 코드를 작성(단, 배열을 사용)
public class Day05Q003 {
 
    public static void main(String[] args) {
        
        // 배열 선언하기
        int[] m = new int[10];
        
        Scanner sc = new Scanner(System.in);
        
        // 반복문을 사용해서 사용자로부터 입력된 값을 배열에 담기
        for(int i = 0; i<m.length; i++) {
            System.out.println((i+1)+"번째 입력 : ");
            m[i] = sc.nextInt();
            System.out.println("score : " + m[i]);
        }
        
        // 배열 요소 합계
        int tot = 0;
        for(int i=0; i<m.length;i++) {
            tot += m[i];
        }
        System.out.println("합계 : " + tot);
        // 평균
        float avg = tot/10.0f;
        System.out.println("평균 : " + avg);
        
        // 합계와 평균을 출력
 
    }
 
}
cs