개발자공부 (2021.11~현재)/Java

스트림을 이용한 성적관리 프로그램 만들기

purplecloud 2021. 12. 10. 18:47

지금까지 성적관리 프로그램을 만들때 데이터를 직접 콘솔창에 입력하여 평균이나 학점 등의 결과를 냈다면,

txt파일에 저장된 값을 불러와서 자동으로 평균을 계산해주는 프로그램을 만들어볼 예정.

 

stream은 중간 매개체 역할이기 때문에 값을 읽을 수 있는 scanner 객체는 여전히 필요하다.

hasNextLine() 메소드는 한 줄씩 데이터가 남아있다면 true 가 반환된다.

import java.io.FileInputStream;
import java.util.Scanner;

public class homework1_day10 {
    public static void main(String[] args) {
        Scanner sc;

        try {
            // scanner에 data.txt에 있는 값을 불러옴
            sc = new Scanner(new FileInputStream("data.txt"));
            // sc에 값이 남아있다면 계속 무한 반복
            while (sc.hasNextLine()) {
                // 한 줄씩 값을 가져와서 str에 저장
                String str = sc.nextLine();
                // 저장된 값을 , 기준으로 자르고 배열에 저장한다.
                String[] arr=str.split(",");
                System.out.println("이름: "+ arr[0]);
                System.out.println("국어점수: "+arr[1]);
                System.out.println("수학점수: "+arr[2]);
                System.out.println("영어점수: "+arr[3]);
                // string 으로 데이터를 가져왔기 때문에 숫자형태로 변환함
                int sum=Integer.parseInt(arr[1])+Integer.parseInt(arr[2])+Integer.parseInt(arr[3]);
                System.out.println("총점: "+ sum);
                int avg=sum/3;
                System.out.println("평균: "+ avg);
                String grade;
                switch (avg/10){
                    case 10: case 9:
                        grade="A";
                        System.out.println("학점: "+grade);
                    case 8:
                        grade = "B";
                        System.out.println("학점 : "+grade);
                        break;
                    case 7:
                        grade = "C";
                        System.out.println("학점 : "+grade);
                        break;
                    case 6:
                        grade = "D";
                        System.out.println("학점 : "+grade);
                        break;
                    default:
                        grade = "F";
                        System.out.println("학점 : "+grade);
                        break;
                }

            }
        }catch(Exception e){
                e.printStackTrace();
        }
    }
}