본문 바로가기

프로그래밍/코드분석

자바의 정석 연습문제 6-4

[ 문 제 ]

class exercise {
public static void main(String args[]) {

Student s = new Student();
s.name = "홍길동";
s.ban = 1;
s.no = 1;
s.kor = 100;
s.eng = 60;
s.math = 76;

System.out.println("이름 : " + s.name);
System.out.println("총점 : " + s.getTotal());
System.out.println("평균 : " + s.getAverage());
}
}

class Student{
String name;
int ban;
int no;
int kor;
int eng;
int math;


}


출력값 

이름 : 홍길동

총점 : 236

평균 : 78.7



[ 풀 이 ]

class Student{
String name;
int ban;
int no;
int kor;
int eng;
int math;

public int getTotal(){
return kor + eng + math;
}

public float getAverage(){
return Math.round((kor+eng+math)/3.0f*10)/10.0f;
}
}



1. 처음에 Student 클래스 getTotal 메서드에서


return s.kor + s.eng + s.math를 시도했다. 바보같은 짓이다. 클래스는 설계도이니까, 뼈대를 세워야 한다.

가장 간단하게 가는 것이다.


return kor + eng + math; 가 정답.



2. public float getAverage를 더 간단하게 만들 수도 있다.


return (int)getTotal 로 풀이를 시작하면 된다.

풀이에서는 (int)(236 / 3f * 10 + 0.5) / 10f → 78.7 이렇게 했지만 

내가 사용한 방법도 나쁘지 않다고 생각한다.


참고 : int과 int의 연산은 int의 결과값이 나온다

따라서 (kor+eng+math)/3을 하면 정수값이 나오게 된다.