[java] 자바 scanner 학습

심심이·2024년 1월 21일
0

java

목록 보기
9/46

public class Sungjuk {
    String hakbun;
    String name;
    int age;
    int kor;
    int eng;
    int math;
    int total;
    double avg;
    char hakjum;

    boolean ageCheck(int number) {
        if(19 < number && number < 40) {
            return true;
        } else {
            System.out.println("19부터 40까지의 나이를 입력하세요.");
            return false;
        } //유효성 검사 메소드 
    }
    boolean jumsuCheck(int jumsu) {
        if(0<= jumsu && jumsu <= 100) {
            return true;
        } else {
            System.out.println("0부터 100까지의 점수를 입력하세요.");
            return false;
        }
    } // 유효성 검사 메소드 

    void print() {
        System.out.println("==" + name + "님의 성적결과==");
        System.out.println("1. 학번 :" + hakbun);
        System.out.println("2. 성명 :" + name);
        System.out.println("3. 나이 :" + age);
        System.out.println("4. 국어 :" + kor);
        System.out.println("5. 영어 :" + eng);
        System.out.println("6. 수학 :" + math);
        cal();
        System.out.println("7. 총점 :" + total);
        System.out.println("8. 평균 :" + avg);
        System.out.println("9. 학점 :" + hakjum);
    } //-- print 메소드 

    void cal() {
        total = kor + eng + math;
        avg = total / 3.0;
        if (avg >= 90) {
            hakjum = 'A';
        } else if (avg >= 80) {
            hakjum = 'B';
        } else if (avg >= 70) {
            hakjum = 'C';
        } else if (avg >= 60) {
            hakjum = 'D';
        } else {
            hakjum = 'F';
        }
    } //-- 학점 계산 메소드
}

코드 실행

import java.util.Scanner;
public class Main_Sungjuk {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Sungjuk sungjuk = new Sungjuk();
        String status = " "; //나이, 숫자 상태 판별

        System.out.println("1. 학번 :");
        String str = scanner.nextLine();
        sungjuk.hakbun = str;

        System.out.println("2. 성명 :");
        str = scanner.nextLine();
        sungjuk.name = str;
        try {
            status = "나이";
            System.out.println("3. 나이 :");
            str = scanner.nextLine();
            int age = Integer.parseInt(str);
            if(!sungjuk.ageCheck(age)) {
                scanner.close();
                return;
            } else {
                sungjuk.age = age;
            }

            status = "점수";
            System.out.println("4. 국어 :");
            str = scanner.nextLine();
            int kor = Integer.parseInt(str);
            sungjuk.kor = kor;
            if(!sungjuk. jumsuCheck(kor)) {
                scanner.close();
                return;
            } else {
                sungjuk.kor = kor;
            }

            System.out.println("5. 영어 :");
            str = scanner.nextLine();
            int eng = Integer.parseInt(str);
            sungjuk.eng = eng;

            System.out.println("6. 수학 :");
            str = scanner.nextLine();
            int math = Integer.parseInt(str);
            sungjuk.math = math;

            sungjuk.print();

        } catch (NumberFormatException e) {
            if("나이".equals(status)) {
                System.out.println("입력하신" + str + "은 제대로 된 나이가 아닙니다.");
            } else {
                System.out.println("입력하신" + str + "은 제대로 된 점수가 아닙니다.");
            }
            scanner.close();
            return;
        }

        scanner.close();



    }
}

학점 이름, 나이, 과목 점수를 입력하면 점수 총점과 평균, 학점을 계산해서 입력해주는 프로그램을 만들었다.
혼자 만들 때는 값을 정확하게 입력하다 보니까... 사용자가 값을 잘못 입력할거라는 생각을 잘 안했었는데, 이런 것까지 체크해서 오류를 없애는게 중요한 것 같다!

좀 더 중복을 줄이고 파악하기 쉬운 코드를 만들고 싶다..
변수 이름 짓는 걸 좀 더 명확하게 생각해봐야겠다!

profile
개발하는 심심이

0개의 댓글

관련 채용 정보