데이터결과물을 다른배열에 담기
1. 확진자수가 증가한 횟수 구하기
// 확진자 수가 늘어난 일자와 수를 다음 배열에 담아주시오.
String[][] results;
int resultCount = 0;
{
// 확진자 수가 달라질 때마다 resultCount를 증가시킴으로써 증가되는 일자 수를 구하는 코드
int old = 0; // 현재 확진자 수
for(int i=0; i<count; i++) {
// i 번째 행의 확진자 수
int current = Integer.parseInt(rows[i][1]);
// i 번재 확진자(current)와 이전 확진자수(old)가 다르다면
if(old != current) {
// 확진자 수가 달라지는 일자의 수를 증가
resultCount++;
old = current;
}
}
String[][] results;
전역화해서 나중에 사용할 수 있게한다.
if( old != current )
이전확진자수와 i번째확진자 수를 비교한다. 숫자가 다르면 카운트를 더한다.
후에 old = current; i번째 숫자를 이전확진자 수에 대입한다.
2. 증가한 횟수를 이용해 새로운 2차배열 생성,
[확진자 증가한 날짜, 증가수] 를 1차원 배열row[]에 넣기.
각 1차원배열을 2차원배열results[][]에 대입
results = new String[resultCount][];
//이름표: 4바이트, 주소는 4바이트=32비트
String date = "";
int diff = 0;
old = 0; // 위에서 쓰였으므로 초기화시키기
int index = 0;
for(int i=0; i<count; i++) { //데이터 총 행인 76까지반복
int current = Integer.parseInt(rows[i][1]); //제주 확진자
if(old != current) {//기존확진자와 현재확진자비교
diff = current - old;//차이 = 현재확진자-기존확진자
date = rows[i][0]; //차이발생한 날
old = current; //기존확진자->현재확진자
String[] row = new String[2];
row[0] = date; // date
row[1] = String.valueOf(diff); // 정수->문자열변환
results[index] = row; //index++후 출력하면 인덱스1이 증가되어 다음인덱스가출력됨
System.out.println(Arrays.toString(results[index]));
index++;//results배열인덱스 증가
}
}
System.out.println("작업완료");
int index = 0;
변수를 쓰는곳 가까이에 선언한다.
String[] row = new String[2];
row[0] = date;
row[1] = String.valueof(diff);
if문의 조건이 성립되어 date, diff가 계산이 되고, 계산된 date와 diff를 1차원배열 row[]에 담아준다.
results[index++] = row;
1차원배열row[]를 2차원배열results[index]에 연결시킨다.
results[i]를 하게되면 ArrayIndexOutOfBoundsException발생한다. 이유는 i가 for문범위인 count(76)까지 돌게된다.
results[resultsCount][];로 선언했고 resultsCount는 20이므로 범위를 초과하게된다.
i과 상관없이 새로운 변수 index를 선언하고 반복문이 실행되는 동안 증가할수있게 index++를 한다.
자바의 2차원배열은 1차원배열이 여러개가 연결된것.
// 확진자 수가 늘어난 일자와 수를 다음 배열에 담아주시오.
String[][] results;
int resultCount = 0;
{
// 확진자 수가 달라질 때마다 resultCount를 증가시킴으로써 증가되는 일자 수를 구하는 코드
int old = 0; // 현재 확진자 수
for(int i=0; i<count; i++) {
// i 번째 행의 확진자 수
int current = Integer.parseInt(rows[i][1]);
// i 번재 확진자(current)와 이전 확진자수(old)가 다르다면
if(old != current) {
// 확진자 수가 달라지는 일자의 수를 증가
resultCount++;
old = current;
}
}
System.out.println(resultCount);
results = new String[resultCount][];
//이름표: 4바이트, 주소는 4바이트=32비트
String date = "";
int diff = 0;
old = 0; // 위에서 쓰였으므로 초기화시키기
int index = 0;
for(int i=0; i<count; i++) { //데이터 총 행인 76까지반복
int current = Integer.parseInt(rows[i][1]); //제주 확진자
if(old != current) {//기존확진자와 현재확진자비교
diff = current - old;//차이 = 현재확진자-기존확진자
date = rows[i][0]; //차이발생한 날
old = current; //기존확진자->현재확진자
String[] row = new String[2];
row[0] = date; // date
row[1] = String.valueOf(diff); // 정수->문자열변환
results[index] = row; //index++후 출력하면 인덱스1이 증가되어 다음인덱스가출력됨
System.out.println(Arrays.toString(results[index]));
index++;//results배열인덱스 증가
}
}
System.out.println("작업완료");
}
'2021 Newlecture > JAVA' 카테고리의 다른 글
배열을 바로출력 vs 변수로 출력 (구조체) (0) | 2021.03.19 |
---|---|
참조형배열 / 객체생성 / 배열의 참조변수가 null 값 참조할때 (0) | 2021.03.19 |
구조체 (0) | 2021.03.18 |
2차원배열의 참조/ 가변배열/참조배열 (0) | 2021.03.17 |
2차원배열 / 열에서 최대값 구하기/ 해당 인덱스값구하기/값변화 차이 (0) | 2021.03.16 |
2차원배열/ 코로나 검사진행자 누적수 구하기/ 열의 합 구하기 (0) | 2021.03.15 |
코로나 검사 누적수 구하기 / 반복문 / 문자열구분 (0) | 2021.03.12 |
String클래스 / 문자열배열 섞기/ 문자열비교 / 문자열정렬 (0) | 2021.03.11 |