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차원배열                       / 우 : 2차원배열

왼쪽 :1차원을 낱개로 처리 rows1,rows2

오른쪽 :1차원배열의 반복을 일괄적으로 처리.

2차원배열은 대괄호가 두개 사용되어야 값을 넣을 수있다.

rows[0] 1차원배열을 이끄는 참조명 

String[2][]; 2개의 배열을 엮는다.

 

 

 

2차원배열 이용해 코로나 검사진행자 누적수 구하기

  1. FileInputStream, Scanner를 이용해 데이터를 불러온다
  2. 레코드갯수를 알아낸다.
  3. 레코드 로드(데이터불러와서 쉼표로 구분하고 배열에 넣기)
  4. 레코드출력해서 확인
  5. 검사진행자 누적수 얻는 코드작성

1~6 과정 코드

  1. FileInputStream, Scanner를 이용해 데이터를 불러온다
  2. 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);
			} 
			
	}
}

+ Recent posts