[문제] 성적 처리 프로그램
main() 메서드에서는 키보드로 이름, 국어점수, 영어점수, 수학점수를 입력 받고
총점 메서드, 평균 메서드, 학점 메서드를 호출하여 성적을 처리한 후에 화면에 성적 결과를 출력해보자
============================코드============================
// 총점을 구하는 메서드 / 평균을 구하려면 총점의 값이 반환되어야 하기 때문에 void(x) --> int로 변경
public static int total(int k, int e, int m) {
return k + e + m;
} // total() 메서드 end
public static double average(int tot) { // 학점을 구하려면 평균의 값이 반환되어야 함
return tot / 3.0;
} // average() 메서드 end
public static String hakjum(double avg) { // 학점을 구하려면 평균의 값이 반환되어야 함
String grade = ""; // 빈 값으로 초기화한다는 뜻 or String grade = null; 도 가능
if(avg >= 90) {
grade = "A학점";
}else if(avg >= 80) {
grade = "B학점";
}else if (avg >= 70) {
grade = "C학점";
}else if (avg >= 60) {
grade = "D학점";
}else if (avg >= 50) {
grade = "E학점";
}
return grade;
} // hakjum() 메서드 end
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 1. 메인 메서드에서는 이름, 국어점수, 영어점수, 수학점수를 키보드로 입력만 받자
System.out.print("학생의 이름을 입력하세요 : ");
String name = sc.next();
System.out.print("국어점수를 입력하세요 : ");
int kor = sc.nextInt();
System.out.print("영어점수를 입력하세요 : ");
int eng = sc.nextInt();
System.out.print("수학점수를 입력하세요 : ");
int mat = sc.nextInt();
System.out.println();
// 2. 총점을 구하자 ==> 총점 메서드 호출 ==> 인자를 넘겨주기
int sum = total(kor , eng, mat);
// 3. 평균을 구하자 ==> 평균 메서드 호출
double avg = average(sum);
// 4. 학점을 구하자 ==> 학점 메서드 호출
String hakjum = hakjum(avg);
// 5. 성적 결과를 화면에 출력해보자
System.out.println("이 름 : " + name);
System.out.println("국어점수 : " + kor + "점");
System.out.println("영어점수 : " + eng + "점");
System.out.println("수학점수 : " + mat + "점");
System.out.println("총 점 : " + sum + "점");
System.out.printf("평 균 : %.2f점 \n" , avg);
System.out.println("학 점 : " + hakjum);
sc.close();
}

[문제]
무한반복으로 개인별 성적을 처리해보자
// 총점을 구하는 메서드 / 평균을 구하려면 총점의 값이 반환되어야 하기 때문에 void(x) --> int로 변경
public static int total(int k, int e, int m) {
return k + e + m;
} // total() 메서드 end
public static double average(int tot) { // 학점을 구하려면 평균의 값이 반환되어야 함
return tot / 3.0;
} // average() 메서드 end
public static String hakjum(double avg) { // 학점을 구하려면 평균의 값이 반환되어야 함
String grade = ""; // 빈 값으로 초기화한다는 뜻 or String grade = null; 도 가능
if(avg >= 90) {
grade = "A학점";
}else if(avg >= 80) {
grade = "B학점";
}else if (avg >= 70) {
grade = "C학점";
}else if (avg >= 60) {
grade = "D학점";
}else if (avg >= 50) {
grade = "E학점";
}
return grade;
} // hakjum() 메서드 end
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(true) { // 무한반복
// 1. 메인 메서드에서는 이름, 국어점수, 영어점수, 수학점수를 키보드로 입력만 받자
System.out.print("학생의 이름을 입력하세요 : ");
String name = sc.next();
System.out.print("국어점수를 입력하세요 : ");
int kor = sc.nextInt();
System.out.print("영어점수를 입력하세요 : ");
int eng = sc.nextInt();
System.out.print("수학점수를 입력하세요 : ");
int mat = sc.nextInt();
System.out.println();
// 2. 총점을 구하자 ==> 총점 메서드 호출 ==> 인자를 넘겨주기
int sum = total(kor , eng, mat);
// 3. 평균을 구하자 ==> 평균 메서드 호출
double avg = average(sum);
// 4. 학점을 구하자 ==> 학점 메서드 호출
String hakjum = hakjum(avg);
// 5. 성적 결과를 화면에 출력해보자
System.out.println("이 름 : " + name);
System.out.println("국어점수 : " + kor + "점");
System.out.println("영어점수 : " + eng + "점");
System.out.println("수학점수 : " + mat + "점");
System.out.println("총 점 : " + sum + "점");
System.out.printf("평 균 : %.2f점 \n" , avg);
System.out.println("학 점 : " + hakjum);
System.out.println("::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::");
System.out.println();
// 계속 진행할지, 종료를 할지 여부를 확인해야 함
System.out.print("계속 진행할까요? (Y : 계속 / N : 종료) : ");
String res = sc.next();
if(res.equalsIgnoreCase("N")) { // equalsIgnoreCase : 대소문자 구분 없이 사용 가능
break;
}
} // while 반복문 end
System.out.println("수고 하셨습니다.");
sc.close();
}

**어려웠던 점
-while문으로 무한반복을 만들 수 있다는 점을 기억하자
-생성한 메서드 내에 문자열을 넣을 시 문자열 변수명을 초기값을 설정하는 것을 생각해내는 것이 어려웠다.. 문자의 초기값은 ""로 설정!