본문 바로가기

[21.03.08~] JAVA/자바 개인적 정리

[입력오류시 다시 출력] 국어,영어,수학의 값을 getScore()함수로 받은 후 유효성 검사까지 완료하기


package days06_night;

import java.util.Scanner;

public class Ex03_02_02 {

    public static void main(String[] args) {
        //days04.Ex01.java 메인함수 긁어온 것 
        //국어,영어,수학 점수 다른 함수로부터 받아서 총점, 평균까지 출력

        int kor, eng, mat, tot;
        double avg;

        //요기가 중요
        kor = getScore("국어");
        eng = getScore("영어");
        mat = getScore("수학");

        tot = kor + eng + mat;
        avg = (double) tot /3;

        System.out.println(">국어: " +kor ) ; 
        System.out.println(">영어: " +eng ); 
        System.out.println(">수학: " +mat ); 
        System.out.println(">총계: " +tot ); 
        System.out.println(">평균: " +avg ); 


    }

    private static int getScore(String subject) {

        //0-100점 사이인지 검증하고, 아니면 "입력오류. 다시 입력하세요 :" 띄우기
        Scanner scanner = new Scanner(System.in);
        String data;

        String regex = "100 | [1-9]?[0-9]";
        boolean flag = false;

        do {
            if(flag) System.out.println("입력오류. 다시 입력하세요: ");
            System.out.printf("%s 점수를 입력하세요: ", subject);
            data = scanner.next();

            data.matches(regex);
        } while (flag = !data.matches(regex));


        return Integer.parseInt(data);
    }

}