public class ReportTestV3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String name;
int kor, eng, math;
int total;
double avg;
char grade;
name = "김이름";
kor = 80;
eng = 0;
math = 0;
total = kor + eng + math;
avg = total / 3.0; // int, double 형 연산을 하면 큰 타입의 연산(double)으로 된다.
avg = (int)(avg*100)/100.0; // 소수점 두 번째 자리까지만 출력할 수 있다.
switch((int)avg/10) {
case 10: // 100점일 때도 A이다. break; 가 없으므로 case 9: 로 넘어간다.
case 9:
grade = 'A'; break;
case 8:
grade = 'B'; break;
case 7:
grade = 'C'; break;
case 6:
grade = 'D'; break;
default:
grade = 'F'; break;
}
System.out.println("이름 : "+name+"\r\n"+"국어 점수 : "+kor+"\r\n"+"영어 점수 : "+eng+"\r\n"+"수학 점수 : "+math+"\r\n"+"총점 : "+total+"\r\n"+"평균 : "+avg+"\r\n"+"학점 : "+grade);
}
}
위의 코드에서 주목해야 할 점이 두 가지가 있다.
평균을 낼 때 total(int형)을 3.0(double형)으로 나누면 큰 타입(double형)으로 연산된다.
즉 결과는 평균 : 26.66이 나온다.
case 10:
에서 break문이 없으므로 case 9:
로 넘어간다. 정보처리기사 문제에서도 가끔 나온 문제 유형이니 숙지하는 것이 좋겠다.
Java 16 버전에서는
case 10, 9:
grade = 'A'; break;
로도 작성 가능하다.