[JAVA] 클래스 과제

Coastby·2022년 9월 22일
0

LIKELION Back-End School

목록 보기
10/61

1. grade class 를 만들기

1) 국어, 영어, 수학을 입력받는 기능을 만들고,
2) 평균이 90 이상이면 수우미양가를 출력
3) GradeTest 프로그램

import java.util.Scanner;

class Grade {
	
	int koreanScore;
	int englishScore;
	int mathScore;
	
	private void setKoreanScore(int koreanScore) {
		this.koreanScore = koreanScore;
	}
	
	private void setEnglishScore(int englishScore) {
		this.englishScore = englishScore;
	}
	
	private void setMathScore(int mathScore) {
		this.mathScore = mathScore;
	}
	
	private void printFinalScore () {
		
		int avgScore = (koreanScore + englishScore + mathScore)/3;
		String result;
		
		
		if (avgScore >= 90) {
			result = "수";
		} else if (avgScore >= 80) {
			result = "우";
		} else if (avgScore >= 70) {
			result = "미";
		} else if (avgScore >= 60) {
			result = "양";
		} else {
			result = "가";
		}
		
		System.out.println("최종 성적 : " + result);
		
	}
	
	public void run() {
		
		System.out.println("성적 출력 프로그램을 시작합니다.");
		Scanner sc = new Scanner(System.in);
		System.out.println("국어 성적을 입력해주세요.");
		int koreanScore = sc.nextInt();
		setKoreanScore(koreanScore);
		
		System.out.println("영어 성적을 입력해주세요.");
		int englishScore = sc.nextInt();
		setEnglishScore(englishScore);
		
		System.out.println("수학 성적을 입력해주세요.");
		int mathScore = sc.nextInt();
		setMathScore(mathScore);
		
		
		printFinalScore();
		
	}
	
}



public class GradeTest {

	public static void main(String[] args) {
		
		Grade grade = new Grade();
		grade.run();		

	}

}

⭐️ 다시 생각해볼 것

  • 평균은 소수점이 나오니 double로 하는 것이 좋을 듯, 그러나 Int끼리 연산을 하면 int가 나온다.
    /3.0하면 double 형이 된다.
  • 변수들은 다 위로 올리자.

2. 금일 업다운게임을 리팩토링

1) 게임을 클래스로 만들기
2) 객체를 생성해서 게임이 실행될 수 있도록

import java.util.Scanner;


class UpDownGame {
	
	public void run() {
		final int COUNT = 10;
        int[] arrInput;// 사용자 입력
        int answer;
        
        arrInput = new int[COUNT];
        answer = (int) (Math.random() * 100 + 1);
        Scanner sc = new Scanner(System.in);
        
        for (int i = 0; i < arrInput.length; i++) {
            System.out.print("숫자를 입력해주세요 : ");	
            int num = sc.nextInt();

            if (num > answer) {
                System.out.println("Down ===> " + (COUNT - i - 1) + "번 남아 있습니다.");
            } else if (num < answer) {
                System.out.println("Up ====> " + (COUNT - i - 1) + "번 남아 있습니다.");
            } else {
                System.out.println("일치");
                break;
            }
        }
        
	}
	
}

public class UpAndDownTest {

	public static void main(String[] args) {
	    Scanner sc;
	    UpDownGame game;

	    while (true) {

	        try {
	            sc = new Scanner(System.in);

	            System.out.println("게임시작 1");
	            System.out.println("게임종료 2");
	            System.out.println(">>");

	            int num = sc.nextInt();

	            if (num == 1) {
	                game = new UpDownGame();
	                game.run();
	            } else {
	                System.out.println("게임을 종료합니다.");
	                break;
	            }
	        } catch (Exception e) {
	            System.out.println("잘못된 입력입니다.");
	            System.out.println("게임을 다시 시작 합니다.");

	        }

	    }

	}

}

⭐️ 다시 생각해 볼 것

  • 게임 시작할 때 숫자 초기화되도록 생성자에 넣어주자.
  • 역시 변수는 다 클래스 필드로 넣어주기.
class UpDownGame2 {
    private static int COUNT = 10;
    private int[] arrInput;// 사용자 입력
    private int answer;

    public UpDownGame2() {
        arrInput = new int[COUNT];
        answer = (int) (Math.random() * 100 + 1);
    }

    public void run() {
        Scanner sc = new Scanner(System.in);

        try {
            for (int i = 0; i < arrInput.length; i++) {
                System.out.print("숫자를 입력해주세요 : ");
                int num = sc.nextInt();

                if (num > answer) {
                    System.out.println("Down ===> " + (COUNT - i - 1) + "번 남아 있습니다.");
                } else if (num < answer) {
                    System.out.println("Up ====> " + (COUNT - i - 1) + "번 남아 있습니다.");
                } else {
                    System.out.println("일치");
                    break;
                }
            }
        } catch (Exception e) {
            System.out.println("잘못된 입력입니다. 처음부터 다시 입력하세요");
            run();
        }
    }
}
profile
훈이야 화이팅

0개의 댓글