010 メソッドのオーバーロード 006 解答例

public class ArrayProcessor {

    // 整数の配列の合計を計算するメソッド
    public static int sum(int[] array) {
        int sum = 0;
        for (int num : array) {
            sum += num;
        }
        return sum;
    }

    // 浮動小数点数の配列の合計を計算するメソッド(オーバーロード)
    public static double sum(double[] array) {
        double sum = 0;
        for (double num : array) {
            sum += num;
        }
        return sum;
    }

    // 整数の配列の平均を計算するメソッド
    public static double average(int[] array) {
        int sum = sum(array);
        return (double) sum / array.length;
    }

    // 浮動小数点数の配列の平均を計算するメソッド(オーバーロード)
    public static double average(double[] array) {
        double sum = sum(array);
        return sum / array.length;
    }

    public static void main(String[] args) {
        // 整数の配列
        int[] intArray = {1, 2, 3, 4, 5};
        System.out.println("Sum of intArray: " + sum(intArray)); // 出力: Sum of intArray: 15
        System.out.println("Average of intArray: " + average(intArray)); // 出力: Average of intArray: 3.0

        // 浮動小数点数の配列
        double[] doubleArray = {1.5, 2.5, 3.5, 4.5, 5.5};
        System.out.println("Sum of doubleArray: " + sum(doubleArray)); // 出力: Sum of doubleArray: 17.5
        System.out.println("Average of doubleArray: " + average(doubleArray)); // 出力: Average of doubleArray: 3.5
    }
}

このコードでは、整数と浮動小数点数の配列に対してそれぞれ合計と平均を計算するメソッドを提供しています。オーバーロードにより、異なるデータ型に対応しています。

ポイント:

  • オーバーロードされたメソッド:
    • sum メソッドと average メソッドが、それぞれ整数配列と浮動小数点数配列に対する計算を行うオーバーロードされたメソッドとして実装されています。
  • データ型ごとの処理:
    • 整数の配列と浮動小数点数の配列に対して、それぞれ適切なデータ型で合計と平均を計算するためのメソッドが提供されています。
  • sum メソッドの実装:
    • sum メソッドでは、for-each ループを使用して配列の各要素を合計に加算しています。
  • average メソッドの実装:
    • average メソッドでは、事前に定義された sum メソッドを利用して合計を取得し、その後に要素数で割って平均を計算しています。
  • main メソッド:
    • main メソッドでは、整数の配列と浮動小数点数の配列を作成し、それぞれのメソッドを呼び出して結果を表示しています。

このような構造にすることで、同じ処理を異なるデータ型に対して再利用でき、コードの冗長性が低減されます。また、オーバーロードにより、同じメソッド名を使用して異なるデータ型に対応する柔軟性が確保されています。

「010 メソッドのオーバーロード」問題集リスト