TIL/Java

[Java] 중간고사: 문제 해결 능력 기르기_평균값 계산기

야리니 2022. 1. 5. 15:07
728x90
반응형

평균값 계산기

파라미터로 정수 배열 intArray를 받고 배열의 모든 값의 평균을 리턴해주는 메소드 computeAverage를 쓰세요.

리턴값의 자료형은 double입니다.

 

4.3333333
3.75
4.0
3.0

 

해설

합 구하기

일단 반복문을 이용해서 배열의 모든 값을 더해야한다.

 

while문 이용

double computeAverage(int[] intArray) {
    int sum = 0;
    int i = 0;

    while (i < intArray.length) {
        sum += intArray[i];
        i++;
    }
}

 

기본 for문 이용

double computeAverage(int[] intArray) {
    int sum = 0;
    for (int i = 0; i < intArray.length; i++) {
        sum += intArray[i];
    }
}

 

for each 이용

double computeAverage(int[] intArray) {
    int sum = 0;
    for (int num : intArray) {
        sum += num;
    }
}

 

평균 구하기

이제 sum을 길이만큼 나누면 된다. 그런데 단순히 sum / intArray.length를 하면 안 된다. 만약, sum이 13이고 intArray.length가 3이면 4.333... 대신 4가 결과값으로 나온다. 정수형과 정수형 간의 연산은 정수형이 나오기 때문입니다. 이 문제를 해결하기 위해서 double로 타입 캐스팅을 해주자!

return (double) sum / intArray.length;

 

모범 답안

public class AverageFinder {
    double computeAverage(int[] intArray) {
        int sum = 0;
        for (int num : intArray) {
            sum += num;
        }

        return (double) sum / intArray.length;
    }

    public static void main(String[] args) {
        AverageFinder finder = new AverageFinder();

        // 테스트 1
        int[] testArray1 = {3, 7, 3};
        System.out.println(finder.computeAverage(testArray1));

        // 테스트 2
        int[] testArray2 = {1, 3, 4, 7};
        System.out.println(finder.computeAverage(testArray2));

        // 테스트 3
        int[] testArray3 = {4};
        System.out.println(finder.computeAverage(testArray3));

        // 테스트 4
        int[] testArray4 = {1, 2, 3, 4, 5};
        System.out.println(finder.computeAverage(testArray4));
    }
}

 

4.333333333333333
3.75
4.0
3.0

 

 

본인 작성 코드

for문을 사용하여 평균값 계산기를 만들었다.

 

728x90
반응형