본문 바로가기

JAVA/국비 공부

3월5일수업(GradeBook02-Answer)

package day0305;
//사용자로부터 번호, 이름, 국어,영어,수학 점수를 입력 받아

//다음과 같은 양식으로 출력해주는 프로그램

//번호 :  ##번 이름: ####
//국어: 0##점 영어:0##점 수학 0##점
//총점: 0##점 평균  0##.##점

// 단. 입력기능과 출력기능을 분리하여
//사용자가 입력을  선택했을 때에만 입력을 하게되고
// 사용자가 출력을 선택했을 때에만 출력을 하게 하는 프로그램을 만드시오
//또한 사용자가 잘못된 점수를 입력했을 경우 올바른 점수를 입력할때까지 다시 입력 받도록 하세요. 

//생각해볼것 : 변수의 선언위치

//심화문제: 만약 사용자가 아무런 정보를 입력없이 출력을 누르면
//"아직 아무런 입력이 되지 않았습니다."
//라는 메세지만 출력되게 프로그램을 작성하시오.

import java.util.Scanner;

public class GradeBook2Answer {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 우리가 while 문안에 있는
        // if코드 블락에서 정보를 입력하는것이
        // while이 반복되더라도 남아있게 하기 위해서는
        // while 문 이전에 선언과 초기화를 한번씩 다 해주어야한다!

        // 사용할 변수의 선언과 초기화
        int id = 0;
        String name = new String();
        int kor = 0;
        int eng = 0;
        int mat = 0;

        // 사용자가 한번이라도 입력을 했는지를 저장할 boolean변수
        boolean inputChecker = false;

        while (true) {
            System.out.println("1. 성적입력 2. 성적출력 3. 종료");
            System.out.println(">");
            int user = scanner.nextInt();

            if (user == 1) {
                // 성적 입력 코드 구현
                // 번호 입력
                System.out.println("번호를 입력해주세요");
                System.out.println(">");
                id = scanner.nextInt();

                // 이름 입력
                scanner.nextLine();
                System.out.println("이름을 입력해주세요");
                System.out.println(">");
                name = scanner.nextLine();

                // 임시로 사용자의 점수를 입력받아서
                // 올바른 점수인지 체크하여
                // 올바를 점수이면 각각의 점수에 다시 할당해줄
                // int 변수 선언

                // int 변수 선언
                int userInput = 0;

                // 국어 점수 입력
                System.out.println("국어 점수를 입력해주세요");
                System.out.println(">");
                userInput = scanner.nextInt();

                while (!(userInput >= 0 && userInput <= 100)) {
                    System.out.println("잘못 입력하셨습니다.");
                    System.out.println("국어 점수를 입력해주세요");
                    System.out.println(">");
                    userInput = scanner.nextInt();
                }
                // 영어입력

                System.out.println("영어 점수를 입력해주세요");
                System.out.println(">");
                userInput = scanner.nextInt();

                while (!(userInput >= 0 && userInput <= 100)) {
                    System.out.println("잘못 입력하셨습니다.");
                    System.out.println("영어 점수를 입력해주세요");
                    System.out.println(">");
                    userInput = scanner.nextInt();
                }
                eng = userInput;
                // 수학 점수 입력
                System.out.println("수학 점수를 입력해주세요");
                System.out.println(">");
                userInput = scanner.nextInt();

                while (!(userInput >= 0 && userInput <= 100)) {
                    System.out.println("잘못 입력하셨습니다.");
                    System.out.println("수학 점수를 입력해주세요");
                    System.out.println(">");
                    userInput = scanner.nextInt();
                }
                mat = userInput;

                inputChecker = true;

            } else if (user == 2) {
                // 성적 출력 코드 구현

                // inputChecker의 값을 확인하여
                // true일 경우에는 사용자가 1번 기능인
                // 성적입력을 실행을 한번이라도 했다는 의미이므로 출력을 하고
                // 만약, false의 경우에는 사용자가 한번도 입력을 안했다는 의미가 되므로
                // 경고 메세지만 출력해주면 된다.

                // boolea타입일 경우,
                // 굳이 비교연산자를 사용해서
                // true인지false인지 비교를 하지않아도
                // 그 자체 안에 저장된 값이 true/false값이므로
                // 우리가 아래처럼 조건식에 그 자체를 넣어줄 수 있다.

                if (inputChecker) {

                    int sum = eng + kor + mat;
                    double average = sum / 3.0;

                    System.out.printf("번호: %03d번 이름 %s\n", id, name);
                    System.out.printf("국어: %03d점 영어: %03d점 수학: %03d점\n", kor, eng, mat);
                    System.out.printf("총점: %03d점 평균: %06.2f점\n", sum, average);

                } else {

                    System.out.println("아직 입력된 성적이 존재하지 않습니다.");

                }

            } else if (user == 3) {
                System.out.println("사용해주셔서 감사합니다.");
                break;
            }
        }

        scanner.close();

    }

}

<심화 - 아무런 입력이 없을 때 출력되는 화면>

// 사용자가 한번이라도 입력을 했는지를 저장할 boolean변수 활용
        boolean inputChecker = false;
        
         // 임시로 사용자의 점수를 입력받아서
                // 올바른 점수인지 체크하여
                // 올바를 점수이면 각각의 점수에 다시 할당해줄
                // int 변수 선언

                // int 변수 선언
                int userInput = 0;

                // 국어 점수 입력
                System.out.println("국어 점수를 입력해주세요");
                System.out.println(">");
                userInput = scanner.nextInt();

                while (!(userInput >= 0 && userInput <= 100)) {
                    System.out.println("잘못 입력하셨습니다.");
                    System.out.println("국어 점수를 입력해주세요");
                    System.out.println(">");
                    userInput = scanner.nextInt();
                }
                // 영어입력

                System.out.println("영어 점수를 입력해주세요");
                System.out.println(">");
                userInput = scanner.nextInt();

                while (!(userInput >= 0 && userInput <= 100)) {
                    System.out.println("잘못 입력하셨습니다.");
                    System.out.println("영어 점수를 입력해주세요");
                    System.out.println(">");
                    userInput = scanner.nextInt();
                }
                eng = userInput;
                // 수학 점수 입력
                System.out.println("수학 점수를 입력해주세요");
                System.out.println(">");
                userInput = scanner.nextInt();

                while (!(userInput >= 0 && userInput <= 100)) {
                    System.out.println("잘못 입력하셨습니다.");
                    System.out.println("수학 점수를 입력해주세요");
                    System.out.println(">");
                    userInput = scanner.nextInt();
                }
                mat = userInput;

                inputChecker = true;

            } else if (user == 2) {
                // 성적 출력 코드 구현

                // inputChecker의 값을 확인하여
                // true일 경우에는 사용자가 1번 기능인
                // 성적입력을 실행을 한번이라도 했다는 의미이므로 출력을 하고
                // 만약, false의 경우에는 사용자가 한번도 입력을 안했다는 의미가 되므로
                // 경고 메세지만 출력해주면 된다.

                // boolea타입일 경우,
                // 굳이 비교연산자를 사용해서
                // true인지false인지 비교를 하지않아도
                // 그 자체 안에 저장된 값이 true/false값이므로
                // 우리가 아래처럼 조건식에 그 자체를 넣어줄 수 있다.

                if (inputChecker) {

                    int sum = eng + kor + mat;
                    double average = sum / 3.0;

                    System.out.printf("번호: %03d번 이름 %s\n", id, name);
                    System.out.printf("국어: %03d점 영어: %03d점 수학: %03d점\n", kor, eng, mat);
                    System.out.printf("총점: %03d점 평균: %06.2f점\n", sum, average);

                } else {

                    System.out.println("아직 입력된 성적이 존재하지 않습니다.");

                }

            } else if (user == 3) {
                System.out.println("사용해주셔서 감사합니다.");
                break;
            }
        }

        scanner.close();

    }

}

'JAVA > 국비 공부' 카테고리의 다른 글

숙제  (0) 2021.03.05
3월5일수업(GradeBook03)  (0) 2021.03.05
3월5일 수업(Validation)  (0) 2021.03.05
3월5일(GradeBook01)  (0) 2021.03.05
3월5일 수업(메뉴 만들기)  (0) 2021.03.05