1. 일별 가장 많은 검사진행 수는 ?
열에서 최대값 찾기
//일별 가장 많은 검사진행 수는 ?
{
int max = 0;
int current;
for(int i =0; i<count;i++) {
current = Integer.parseInt(rows[i][3]);
if(current > max)
max = current;
}
System.out.println(max);
System.out.println();
}
2. 검사 진행 수가 가장 많았던 날짜는 ?
해당되는 열의 위치를 찾아 동일한 행,다른열에서 데이터찾기.
//검사진행수가 가장 많았던 날짜는 ?
String date ="";
int idx = 0;
for(int i=0;i<count;i++) {
if(rows[i][3].equals(String.valueOf(max))) //세미콜론주의
idx = i;
}
date = rows[idx][0];
System.out.println(date);
3. 확진자 수가 늘어난 일자와 수를 출력하시오.
데이터값 변화가있는 열의 위치찾기→데이터변화차이구하기→ 동일한 행,다른열의 데이터찾기(날짜).
//확진자 수가 늘어난 일자와 수를 출력하시오.
{
String date="";
int diff = 0;
int current = Integer.parseInt(rows[0][1]);
int index = 0;
int next = 0;
for(int i=0;i<count;i++) {
next = Integer.parseInt(rows[i][1]); //변화할위치
if(current!=next) {
diff = next - current;
date = rows[i][0];
current = next;
index++;
System.out.printf("%d : %s, %d\n",index,date,diff);
}
}
package ex3.array;
import java.io.FileInputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Scanner;
public class Program3MultiArray3 {
public static void main(String[] args) throws IOException {
int count = 0;
String[][] rows;
//--------------------------------------------------------------
//레코드 개수를 알아 내는 코드
{
FileInputStream fis = new FileInputStream("res/corona.csv");
Scanner scan = new Scanner(fis);
//while반복을 하면서 count++연산을 한다. 마지막 줄을 만날때까지
String line;
while(scan.hasNextLine()) {
line = scan.nextLine();
count++;
}
scan.close();
fis.close();
count--;
System.out.println("총 행의 갯수"+count);
}//충돌방지
//--------------------------------------------------------------
//레코드를 로드하는 코드
{
rows = new String[count][];
FileInputStream fis = new FileInputStream("res/corona.csv");
Scanner scan = new Scanner(fis);
/*
* 0번째방 : {"a", "b", "c"}
* 1번째방 : {"d", "e", "f"}
*
* */
String line;
scan.nextLine(); // 담을필요없다.한줄버리기
for (int i = 0; i < count; i++) { // 한줄 불러오고, 나눠서 배열에넣기
line = scan.nextLine(); // 한줄불러오기
rows[i] = line.split(","); // 불러온것 쉼표로 구분
}
scan.close();
fis.close();
}
//--------------------------------------------------------------
//레코드 출력하는 코드
for (int j = 0; j < count; j++) { // 행
for (int i = 0; i < 10; i++) { // 열채우기
System.out.printf("%s", rows[j][i]);
if (i < 9)
System.out.printf(",");
}
System.out.println();
}
//--------------------------------------------------------------
//검사진행자 누적수 얻는 코드
{
int total = 0;
for(int i=0;i<count;i++)
total += Integer.parseInt(rows[i][3]); //문자열을 정수로 형변환
System.out.println(total);
}
//--------------------------------------------------------------
//일별 가장 많은 검사진행 수는 ?
{
int max = 0;
int current;
for(int i =0; i<count;i++) {
current = Integer.parseInt(rows[i][3]);
if(current > max)
max = current;
}
System.out.println(max);
System.out.println();
//검사진행수가 가장 많았던 날짜는 ?
String date ="";
int idx = 0;
for(int i=0;i<count;i++) {
if(rows[i][3].equals(String.valueOf(max))) //세미콜론주의
idx = i;
}
date = rows[idx][0];
System.out.println(date);
}
//확진자 수가 늘어난 일자와 수를 출력하시오.
{
String date = "";
int diff = 0;
int old = 0; //이전확진자수
int current = 0; //현재확진자 수
int index = 0;
for(int i=1;i<count;i++) {
current = Integer.parseInt(rows[i][1]);
if(old != current) {
diff = current - old;
date = rows[i][0];
old = current;
//년 월 일로 출력하기
date = date.substring(0,4)+"년"+
date.substring(5,7)+"월"+
date.substring(8,10)+"일";
System.out.printf("%d : %s, %d\n",index+++1,date,diff);
}
}
}
}
}
'2021 Newlecture > JAVA' 카테고리의 다른 글
참조형배열 / 객체생성 / 배열의 참조변수가 null 값 참조할때 (0) | 2021.03.19 |
---|---|
구조체 (0) | 2021.03.18 |
2차원배열의 참조/ 가변배열/참조배열 (0) | 2021.03.17 |
2차원배열 / 반복문을 통해 1차원배열생성 하면서 2차원배열에 대입 (0) | 2021.03.17 |
2차원배열/ 코로나 검사진행자 누적수 구하기/ 열의 합 구하기 (0) | 2021.03.15 |
코로나 검사 누적수 구하기 / 반복문 / 문자열구분 (0) | 2021.03.12 |
String클래스 / 문자열배열 섞기/ 문자열비교 / 문자열정렬 (0) | 2021.03.11 |
사진복사 / write(byte [] b, int off, int len) 이용해 출력 (0) | 2021.03.11 |