- 참고 코드
- 성적 클래스와 메인 메소드 배열
학점 출력기(성적표) - 클래스와 메인 메소드 배열 (4)
이전 조건
성적(Sungjuk) 클래스를 이용하여 객체를 만든 다음 그 객체를 이용하여 성적 정보를 입력받은 후 출력하는 프로그램을 작성한다.
최대 100번까지 입력을 받고 출력한다.
100번 내에서 학번에 “exit”를 입력하면 빠져나와 결과를 출력한다.
추가 조건
이전에 작성한 코드에서 총 학생수와 전체 평균 값의 변수를 정적 메소드로 변경한다.
성적(Sungjuk) 클래스 구조
- 필드 : 학번, 이름, 국어, 영어, 수학, 총점, 평균, 등급
- 메소드 : 성적입력(), 성적계산() - 총점, 평균, 등급계산 , 성적 출력()
- (추가) 정적 메소드 : 총 학생수, 전체 평균
입력 형식
학번 입력 ⇒
이름 입력 ⇒
국어 입력 ⇒
영어 입력 ⇒
수학 입력 ⇒
출력 형식
이전과 그대로이다.
기존 코드
Sungjuk.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
import java.util.Scanner; public class Sungjuk { `String hakbun, irum; int kor, eng, math; int tot = 0; double avg = 0; String grade; Sungjuk() { } boolean input_Score() { //true or false Scanner scan = new Scanner(System.in); System.out.println("학번 입력 => "); this.hakbun = scan.next(); if(hakbun.equals("exit")) return true; System.out.println("이름 입력 => "); this.irum = scan.next(); System.out.println("국어 입력 => "); this.kor = scan.nextInt(); System.out.println("영어 입력 => "); this.eng = scan.nextInt(); System.out.println("수학 입력 => "); this.math = scan.nextInt(); return false; } void process_Score() { tot += kor + eng + math; avg = tot / 3; switch ((int)avg / 10) { case 10: case 9: grade = "수"; break; case 8: grade = "우"; break; case 7: grade = "미"; break; case 6: grade = "양"; break; default: grade = "가"; break; } } void output_Score() { System.out.printf("%4s %3s %3d %3d %3d %3d %5.2f %2s\n", hakbun, irum, kor, eng, math, tot, avg, grade); } }
-
ExampleSungjuk.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
public class ExampleSungjuk_method { static int MAX = 100; static Sungjuk obj[] = new Sungjuk[MAX]; public static void main(String[] args) { //obj.input_Score(); //obj.process_Score(); int cnt = 0; double avg_hap = 0; cnt = input_sungjuk(obj); output_sungjuk(obj, cnt); } static int input_sungjuk(Sungjuk obj[]) { int cnt = 0; for(int i =0; i < MAX; i++) { obj[i] = new Sungjuk(); if(obj[i].input_Score()) break; obj[i].process_Score(); cnt++; System.out.println(); } return cnt; } //파라미터 값을 받을 때 추가할 것 -> int cnt : 입력받은 실제 갯수도 받아야 함 static void output_sungjuk(Sungjuk obj[], int cnt) { double avg_hap = 0.0; System.out.println("\n\t\t *** 성적표 ***"); System.out.println("==============================================================="); System.out.println("학번 이름 국어 영어 수학 총점 평균 등급"); System.out.println("==============================================================="); //obj.output_Score(); for (int i = 0; i < cnt; i++) { obj[i].output_Score(); avg_hap += obj[i].avg; } System.out.println("==============================================================="); System.out.printf("\t 총 학생수 = %d, 전체 평균 = %5.2f\n", cnt, avg_hap / cnt); } }
변경 코드
Sungjuk.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
import java.util.Scanner; public class Sungjuk { String hakbun, irum; int kor, eng, math; int tot = 0; double avg = 0; String grade; static int cnt = 0; static double tot_avg = 0; Sungjuk() { } boolean input_Score() { //true or false Scanner scan = new Scanner(System.in); System.out.println("학번 입력 => "); this.hakbun = scan.next(); if(hakbun.equals("exit")) return true; System.out.println("이름 입력 => "); this.irum = scan.next(); System.out.println("국어 입력 => "); this.kor = scan.nextInt(); System.out.println("영어 입력 => "); this.eng = scan.nextInt(); System.out.println("수학 입력 => "); this.math = scan.nextInt(); return false; } void process_Score() { tot += kor + eng + math; avg = tot / 3; switch ((int)avg / 10) { case 10: case 9: grade = "수"; break; case 8: grade = "우"; break; case 7: grade = "미"; break; case 6: grade = "양"; break; default: grade = "가"; break; } } void output_Score() { System.out.printf("%4s %3s %3d %3d %3d %3d %5.2f %2s\n", hakbun, irum, kor, eng, math, tot, avg, grade); } static double getTotalAvg() { return tot_avg / cnt; } }
ExampleSungjuk_method
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
public class ExampleSungjuk_method { final static int MAX = 100; public static void main(String[] args) { Sungjuk obj[] = new Sungjuk[MAX]; input_sungjuk(obj); output_sungjuk(obj); } static void input_sungjuk(Sungjuk obj[]) { for(int i =0; i < MAX; i++) { obj[i] = new Sungjuk(); if(obj[i].input_Score()) break; obj[i].process_Score(); Sungjuk.cnt++; System.out.println(); } } static void output_sungjuk(Sungjuk obj[]) { System.out.println("\n\t\t *** 성적표 ***"); System.out.println("==============================================================="); System.out.println("학번 이름 국어 영어 수학 총점 평균 등급"); System.out.println("==============================================================="); //obj.output_Score(); for (int i = 0; i < Sungjuk.cnt; i++) { obj[i].output_Score(); Sungjuk.tot_avg += obj[i].avg; } System.out.println("==============================================================="); System.out.printf("\t 총 학생수 = %d, 전체 평균 = %5.2f\n", Sungjuk.cnt, Sungjuk.getTotalAvg()); } }
🌞 정보 : 공부 기록용 블로그입니다. 오타나 내용 오류가 있을 경우 알려주시면 감사하겠습니다.
댓글남기기