1차원배열과 2차원배열 차이
1차원배열의 반복 -> 2차원
동일한 배열이름 사용(같은코드를 복사,붙여넣기 x)
1차원배열 | 2차원배열 |
이름을 각각 지었다. String[] rows1; String[] rows2; |
이름하나 사용 String[][] rows = String[2][]; |
rows1 = line.splite(); rows2 = line.splite(); |
rows[0] = line.splite(); 배열의 이름을 인덱스로 씀. 인덱스부분에 변수를 넣어 유연하게 쓸 수 있다. |
rows[1] = 3; 불가능 rows[1] = "asds"; 불가능 rows[1][0] = "asds";가능 |
왼쪽 :1차원을 낱개로 처리 rows1,rows2
오른쪽 :1차원배열의 반복을 일괄적으로 처리.
2차원배열은 대괄호가 두개 사용되어야 값을 넣을 수있다.
rows[0] 1차원배열을 이끄는 참조명
String[2][]; 2개의 배열을 엮는다.
2차원배열 이용해 코로나 검사진행자 누적수 구하기
- FileInputStream, Scanner를 이용해 데이터를 불러온다
- 레코드갯수를 알아낸다.
- 레코드 로드(데이터불러와서 쉼표로 구분하고 배열에 넣기)
- 레코드출력해서 확인
- 검사진행자 누적수 얻는 코드작성
1~6 과정 코드
- FileInputStream, Scanner를 이용해 데이터를 불러온다
- 2. 레코드갯수를 알아낸다.
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);
3.레코드 로드(데이터불러와서 쉼표로 구분하고 배열에 넣기)
rows = new String[count][];
FileInputStream fis = new FileInputStream("res/corona.csv");
Scanner scan = new Scanner(fis);
String line;
scan.nextLine(); // 담을필요없다.한줄버리기
for (int i = 0; i < count; i++) { // 한줄 불러오고, 나눠서 배열에넣기
line = scan.nextLine(); // 한줄불러오기
rows[i] = line.split(","); // 불러온것 쉼표로 구분
}
scan.close();
fis.close();
4.레코드출력해서 확인
for (int j = 0; j < count; j++) { // 행
for (int i = 0; i < 10; i++) { // 열채우기
System.out.printf("%s", rows[j][i]);
if (i < count-1)
System.out.printf(",");
}
System.out.println();
}
5.검사진행자 누적수 얻는 코드작성
int total = 0;
for(int i=0;i<count;i++)
total += Integer.parseInt(rows[i][3]);
System.out.println(total);
package ex3.array;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;
public class Program3MultiArray3 {
public static void main(String[] args) throws IOException {
int count = 0;
String[][] rows; // 배열의 배열 [2][10] 10개짜리2개 [행][열]
//--------------------------------------------------------------
//레코드 개수를 알아 내는 코드
{
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);
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 < count-1)
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);
}
}
}
'2021 Newlecture > JAVA' 카테고리의 다른 글
구조체 (0) | 2021.03.18 |
---|---|
2차원배열의 참조/ 가변배열/참조배열 (0) | 2021.03.17 |
2차원배열 / 반복문을 통해 1차원배열생성 하면서 2차원배열에 대입 (0) | 2021.03.17 |
2차원배열 / 열에서 최대값 구하기/ 해당 인덱스값구하기/값변화 차이 (0) | 2021.03.16 |
코로나 검사 누적수 구하기 / 반복문 / 문자열구분 (0) | 2021.03.12 |
String클래스 / 문자열배열 섞기/ 문자열비교 / 문자열정렬 (0) | 2021.03.11 |
사진복사 / write(byte [] b, int off, int len) 이용해 출력 (0) | 2021.03.11 |
배열 / FileInputStream / Scanner()/ hasNextLine() / while() (0) | 2021.03.10 |