(JAVA) 2차원 배열, 비정방형 배열

InAnarchy·2022년 10월 20일
0

JAVA

목록 보기
6/18
post-thumbnail

Table of Contents

  • 2차원 배열의 선언과 생성
  • 2차원 배열의 초기화
  • 2차원 배열의 모양
  • 정방형 배열
  • 비정방형 배열

2차원 배열의 선언과 생성

1차원 배열과 같은 방식으로 선언하고 생성한다.

선언과 생성을 동시에 하는 방법은 다음과 같다.

int[][] score = new int[4][3]; //4행3열의 2차원 배열

2차원 배열의 초기화

초기화 방법 역시 1차원 배열과 같다.

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

2차원 배열의 모양


변수.length는 2차원 배열의 행의 개수
변수[n].length는 n번째 행의 열의 개수

정방형 배열

각 행의 열의 개수가 같은 배열

public class ScoreAvg {
    public static void main(String[] args) {
        double[][] score = {{3.3,3.4},
                {3.5,3.6},
                {3.7,4.0},
                {4.1,4.2}}; //4행 2열 
        double sum = 0;
        for(int year = 0; year<score.length; year++)
            for(int term = 0; term<score[year].length; term++)
                sum+=score[year][term];

        int n = score.length; //4행
        int m = score[0].length; //2열 
        System.out.println("score avg : " + sum/(n*m));
    }
}
public class Array {
    public static void main(String[] args) {
        int[][] score = {
                {100, 100, 100},
                {20, 20, 20},
                {30, 30, 30},
                {40, 40, 40}
        };
        int sum = 0;

        for(int i = 0; i< score.length; i++){
            for(int j = 0; j< score[i].length; j++){
                System.out.printf("score[%d][%d] = %d%n",i,j,score[i][j]);
            sum += score[i][j];
            }
        }
        System.out.println("sum = " + sum);
    }
}
public class Array {
    public static void main(String[] args) {
        int[][] score = {
                {100, 100, 100},
                {20, 20, 20},
                {30, 30, 30},
                {40, 40, 40},
                {50, 50, 50}
        };
        int korTotal = 0, engTotal = 0, mathTotal = 0;
        System.out.println("번호  국어  영어  수학  총점  평균");
        for (int i = 0; i < score.length; i++) {
            int sum = 0;
            float avg = 0.0f;

            korTotal += score[i][0];
            engTotal += score[i][1];
            mathTotal += score[i][2];
            System.out.printf("%3d", i + 1);

            for (int j = 0; j < score[i].length; j++) {
                sum += score[i][j];
                System.out.printf("%5d", score[i][j]);
            }

            avg = sum / (float) score[i].length;
            System.out.printf("%5d %5.1f%n", sum, avg);
        }

        System.out.printf("총점:%3d %4d %4d%n", korTotal, engTotal, mathTotal);
    }
}
import java.util.Scanner;

public class Array {
    public static void main(String[] args) {
        String[][] words = {
                {"chair", "의자"},
                {"computer", "컴퓨터"},
                {"interger", "정수"}
        };

        Scanner scanner = new Scanner(System.in);

        for (int i = 0; i < words.length; i++) {
            System.out.printf("%d. %s의 뜻은? ", i + 1, words[i][0]);

            String tmp = scanner.nextLine();

            if (tmp.equals(words[i][1])) {
                System.out.printf("정답입니다%n%n");
            } else {
                System.out.printf("틀렸습니다. 정답은 %s입니다.%n%n", words[i][1]);
            }
        }
    }
}

비정방형 배열

각 행의 열의 개수가 다른 배열

이 때 0번째 행의 열의 개수는 1
1번째 행의 열의 개수는 2
2번째 행의 열의 개수는 3
3번째 행의 열의 개수는 4 이다.

비정방형 배열 역시 생성과 동시에 초기화를 통해 생성할 수 있다.

public class SkewedArray {
    public static void main(String[] args) {
        int[][] arr = {{0}, {1, 2}, {3, 4, 5}, {6, 7, 8, 9}};
        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();
        }
    }
}

또 인덱스에 접근하여 값을 초기화해서 배열을 생성할 수도 있다.

public class SkewedArray {
    public static void main(String[] args) {
        int[][] arr = new int[4][]; //4행
        arr[0] = new int[3];
        arr[1] = new int[2];
        arr[2] = new int[3];
        arr[3] = new int[2];

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

        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();
        }
    }
}
public class SkewedArray {
    public static void main(String[] args) {
        int[][] mathScores = new int[2][3];
        for(int i = 0; i< mathScores.length; i++) {
            for (int k = 0; k < mathScores.length; k++) {
                System.out.println("mathScores[" + i + "][" + k + "]=" + mathScores[i][k]);
            }
        }
        System.out.println();

        int[][] englishScores = new int[2][];
        englishScores[0] = new int[2];
        englishScores[1] = new int[3];
        for(int i = 0; i< englishScores.length; i++) {
            for (int k = 0; k < englishScores.length; k++) {
                System.out.println("englishScores[" + i + "][" + k + "]" + englishScores[i][k]);
            }
        }
        System.out.println();

        int[][] javaScores = {{95,88},{92,66,80}};
        for(int i = 0; i<javaScores.length; i++){
            for(int k = 0; k<javaScores[i].length; k++){
                System.out.println("javaScores["+i+"]["+k+"] =" + javaScores[i][k]);
            }
        }
    }
}
profile
github blog 쓰다가 관리하기 귀찮아서 돌아왔다

0개의 댓글