728x90
Java
목표 : 성적 데이터를 읽어서 총점과 평균을 구한다
package iotest;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class Grade03 {
public static void main(String args[]) {
Grade03 grade = new Grade03();
String fileName = "score.txt";
grade.printGrade(fileName);
}
Grade03 클래스에서 grade 객체(인스턴스)를 생성한다.
객체 지향 프로그래밍(OOP, Object Oriented Programming)은
코드 재사용이 용이하고, 유지보수가 쉬워 대형 프로젝트에 적합하다. 용량이 커서 속도가 느리다는 단점도 있다.
score.txt 파일에 있는 성적데이터를 불러온다.
grade 객체 안에 printGrade() 매소드에 성적데이터를 넣어 호출한다.
public void printGrade(String fileName) {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("src/data/" + fileName));
int sum=0;
int count=0;
while (true) { //한줄씩읽고 다음줄로 넘어감
String line = br.readLine();
if (line == null) break;
String[] data = line.split(","); //한줄중에서 두개로나눠서 일반배열
/*for (int i = 0; i < data.length; i++) {
System.out.println(data[i]);
}*/ // data = {홍길동, 50};
sum += Integer.parseInt(data[1]); //split된 배열들중에 둘째index
System.out.println(data[0] + "의 점수는 " + data[1] + "점 입니다.");
count++; //몇줄인지 세기
}
System.out.println("모두의 총점은 " + sum + "점 입니다.");
System.out.println("모두의 평균은 " + sum / count + "점 입니다.");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
printGrade() 매소드를 정의해준다.
BufferedReader 는 버퍼를 이용해 파일을 한 줄씩 읽을 수 있어 실행속도가 빨라 FileReader보다 많이 사용된다.
while 반복문 안에서 존재하는 성적데이터를 readLine으로 한 줄씩 모두 읽어준다. line이 더이상 없으면 멈춘다.
data 가 {홍길동, 50} 의 형식이기 때문에 쉼표를 기준으로 데이터를 split으로 자르고 이름과 점수를 얻어 각각 배열에 담는다.
sum 과 count 에 값이 잘 담겼다.
에러는 try ~ catch 문으로 예외처리 해주고 BufferedReader 자원을 다쓰고나서 br.close(); 로 반납한다.
728x90
'Programming > Java' 카테고리의 다른 글
Java / Networking / 소켓( socket ) 통신 프로그래밍 (0) | 2021.03.27 |
---|---|
Java / 캡슐화 / 상속 / 다형성 개념 (0) | 2021.03.26 |
Java / 결제 시스템 연습 / extends와 implements 차이 (0) | 2021.03.25 |
Java 기본 제공 API / 패키지 / String / Random 클래스 / 개념 (0) | 2021.03.20 |
Java언어란? / 개념 정리 (0) | 2021.03.13 |
댓글