JAVA - 2차원 배열

JeongHoHyun·2023년 3월 26일
0

Study_JavaBasic

목록 보기
1/2
post-thumbnail

📖 자바 2차원배열

2차원 배열을 이용하여 표 형식으로 데이터를 출력하기 위해 임의의 데이터를 넣어주었다.

	   // 모든 데이터에는 합계값들도 들어가있다
        List<Data> dataList = DataSetHandler.SetData();  // 모든 데이터 length : 20
        List<Data> dateTotalList = DataSetHandler.SetDateTotal(dataList); // 날짜별 합계    length : 3
        List<Data> telTotalList = DataSetHandler.SetTelTotal(dataList);    // 번호별 합계    length : 4
        List<Data> originalDataList = DataSetHandler.SetOriginalDataList(dataList);  // 합계를 제외한 데이터 length : 12
        List<String> telList = DataSetHandler.SetTelList();  // 번호 리스트  length : 4 
        String allTotal = "";   //날짜별, 번호별 총 합계

📌 2차원 배열을 오랜만에 사용하면서 헷갈렸던 부분

  • 2차원 배열을 선언할 때 [][]안의 크기는 1부터센다. (0부터가 아님)
    • ex) String[][] sArr = new String[5][6] 일경우 행(세로)가 5, 열(가로)가 6인 2차원 배열이다.
  • 하지만 index를 셀떼는 0부터 세기 때문에 값을 세팅할때 잠깐 헷갈렸다..
    • 마지막 값을 가져오려면 sArr[5][6] 가 아닌 sArr[4][5] 로 가져와야 한다.

처음에 선언했던 데이터들로 2차원 배열을 만들었다

			// 표형식으로 날짜별 합계, 번호별 합계를 추가해 줘야 해서 각각의 행과 열에 +2를 해주었다.
			String[][] aStatics = new String[dateTotalList.size()+2][telTotalList.size()+2];   //[5][6]
            aStatics[0][0] = "  날짜  ";
            // 첫번째 행의 맨마지막 열에 "합계" 를 넣어 주었다
            aStatics[0][telList.size()+1] = "합계";
            // 마지막 행의 첫번째 열에 "합계'를 넣어 주었다
            aStatics[dateTotalList.size()+1][0] = "  합계  ";
            // 마지막행의 마지막 열에는 총 합계가 들어와야 한다.
            aStatics[dateTotalList.size()+1][telTotalList.size()+1] = allTotal;
for (int i = 1; i <telList.size()+1 ; i++) {
                    // for문을 통해 첫번째 행에 전화번호 데이터를 넣어주었다
                    aStatics[0][i] = telList.get(i-1).toString();
                    // 마지막 행에는 번호별 합계 값이 들어가야 한다.
                    aStatics[dateTotalList.size()+1][i] = telTotalList.get(i-1).getTotal();
                }
        // 총 데이터의 개수는 20개이기 때문에 카운트를 생성해주었다.
        int count = 0;
        // 2차원 배열에 값을 넣어주는 작업
        for (int i = 1; i < dateTotalList.size()+1; i++) {
        	// 각 행의 첫번쨰 열에 날짜 값을 넣어준다.
            aStatics[i][0] = dateTotalList.get(i-1).getDate();
            // 각 행의 마지막 열에 날짜별 합계값을 넣어준다.
            aStatics[i][telTotalList.size()+1] = dateTotalList.get(i-1).getTotal();
            // 2차원 배열이기 때문에 2중 for문을 돌려주었다
            for (int j = 1; j < telTotalList.size()+1; j++) {
            	// i번째 행의 j번째 열에 각각의 데이터를 넣어준다
                aStatics[i][j] = originalDataList.get(count).getTotal();
                // 모든 데이터를 넣어주기 위해 count를 만들었고 데이터가 삽입될때 마다 증가시켜 주었다.
                count++;
            }
        }

🖥️ 2차원 배열의 출력

		//2차원 배열의 출력
        for (int i = 0; i < aStatics.length; i++) {
            String[] innerArr = aStatics[i];
            for (int j = 0; j < innerArr.length; j++) {
                System.out.print(innerArr[j] + "  ");
                }
            System.out.println("");
            }
  • 위의 결과를 실행하면 다음과 같이 표 형식으로 값이 출력된다.
profile
2022.11.01 💻~ing

0개의 댓글