성적표

moon.kick·2025년 2월 18일

package ex0217.method;

import java.util.Scanner;

public class Homework01 {

	public static void main(String[] args) {
				
		boolean state = true;
		
		Scanner sc = new Scanner(System.in); //스캐너생성
		total t = new total(); //와일문 밖에서 최초 지정하기 //생성되면서 초기화된다.
		
			while(state) {
				System.out.println("  1.성적표 |  2.종료 ");
				System.out.print("입력해주세요.>    ");
					
					int menuNum = Integer.parseInt(sc.nextLine()); 
					
					switch(menuNum) {
					case 1:
						System.out.print("이름,국,영,수 점수 입력해주세요.");
						String name = sc.nextLine();
						int kor = sc.nextInt();
						int eng = sc.nextInt();
						int mat = sc.nextInt();
					
					t.result(name, kor, eng, mat);
					
					case 2:
					System.out.print("성적표를 종료합니다.");
					//sc.close();
					System.exit(0); //마지막케이스에선 브레이크빼고!!중요
				
					default :
						System.out.println("다시 성적표탭을 선택해주세요.");
										
						// printf로 줄맞춰서 표만들기
			}//스위치끝
			System.out.println();
			
			
			
		}//와일문끝
		System.out.println("시험종료를 축하합니다.다음 학기를 위한 준비를 시작하세요!");
	}
}


class total {	
		
	
	/**
	 * 합구하기			
	 * @param kor
	 * @param eng
	 * @param mat
	 * @return
	 */
			private int sum(int kor, int eng, int mat) {
				int s = kor+eng+mat;
				return s;  ///보이드빼고는 모두 리턴필수!!!
			}
		/**
		 * 평균구하기
		 * @param s
		 * @param n
		 * @return
		 */
			private double avg(int s, int n) {
				double avg= (double)s/n; 
				return avg;
			}
				
			/**
			 * 등급구하기
			 * @param g
			 * @return
			 */
			private String grade(double g) {
				return switch((int)(g/10)) {
					case 10,9 -> "A";
					case 8 -> "B";
					case 7 -> "C";
					case 6 -> "D";
					default ->"F";
				};	

			}
			
			/**
			 * 출력
			 * @param name
			 * @param kor
			 * @param eng
			 * @param mat
			 */
			public void result(String name, int kor, int eng, int mat) {
				//호출 메서드를 최종에 만든다
				//총점호출
				int kk = this.sum(kor, eng, mat);
				//총점인수로 전달 평균구하기
				double jj = avg(kk,3);
				//평균인수로 등급구하기
				String ll = this.grade(jj);
				
				System.out.println(name+" 학생의 총점은 " +kk+"입니다.\n평균은 "+jj+"점 이고,"+ll+"등급입니다");
			
				
				
			}
				
}
				//성적클래스, 메인메서드클래스 따로 2개만들기
				//메서드 4개 만들어 각각 불러서 쓴다.
				//총점(은닉), 평균(은닉), 등급(은닉), 출력(퍼블릭)
				//키워드 입력받는거////통장형태< scanner.nextInt

				//소수점자리 82.3333333333 *100 8233.3333 > int 캐스팅 8233 > /100.0 >
profile
@mgkick

0개의 댓글