008 メソッド (参照型の引数を持つメソッド)018 解答例

public class ArrayAverageCalculator {

    // 整数型の配列の平均値を計算して返すメソッド
    public static double calculateAverage(int[] array) {
        if (array == null || array.length == 0) {
            // 配列がnullまたは空の場合はゼロを返すか、エラー処理を行う
            return 0.0;
        }

        // 配列の合計を求めるための変数を初期化
        int sum = 0;

        // 配列の各要素を合計に加える
        for (int value : array) {
            sum += value;
        }

        // 配列の要素数で割って平均値を計算
        double average = (double) sum / array.length;

        // 平均値を返す
        return average;
    }

    public static void main(String[] args) {
        // 使用例
        int[] numbers = {5, 10, 15, 20, 25};
        double result = calculateAverage(numbers);

        System.out.println("Average: " + result);
    }
}

この例では、calculateAverage メソッドが整数型の配列を引数として受け取り、空の配列やnullでないことを確認してから平均値を計算しています。平均値は double 型で返されています。

引数として渡された配列をメソッド内で操作する


Javaにおいて、配列は参照型であり、メソッドに渡すときは配列の参照が渡されるため、メソッド内で配列を操作すると呼び出し元にも影響が及びます。以下に、参照渡しされた配列を操作する場合の一般的な手順と注意点を解説します。

  1. 配列の作成:
    • メソッド内で新しい配列を作成すると、それはメソッド内でのみ有効です。元の呼び出し元の配列には影響がありません。
  2. 配列の変更:
    • メソッド内で引数として渡された配列の要素を変更すると、呼び出し元の配列も変更されます。これは、渡されたのは配列の参照であるためです。
  3. 新しい配列を返す:
    • メソッドが新しい配列を返す場合、呼び出し元の配列には影響がありません。新しい配列が作成され、それが返されるためです。

以下に、これらの概念を示す簡単な例を示します。

public class ArrayManipulator {

    // 配列の要素を倍にするメソッド
    public static void doubleArrayElements(int[] array) {
        for (int i = 0; i < array.length; i++) {
            array[i] *= 2; // 配列の各要素を倍にする
        }
    }

    // 配列のコピーを作成し、各要素を倍にして返すメソッド
    public static int[] doubleArrayAndReturnNew(int[] array) {
        int[] newArray = new int[array.length];
        for (int i = 0; i < array.length; i++) {
            newArray[i] = array[i] * 2; // 新しい配列に倍にした要素をコピー
        }
        return newArray; // 新しい配列を返す
    }

    public static void main(String[] args) {
        int[] originalArray = {1, 2, 3, 4, 5};

        // 配列の要素を倍にするメソッドを呼び出す
        doubleArrayElements(originalArray);

        // 呼び出し元の配列が変更されていることを確認
        System.out.println("Original Array after doubling elements:");
        for (int value : originalArray) {
            System.out.print(value + " ");
        }

        // 新しい配列を作成し、各要素を倍にして返すメソッドを呼び出す
        int[] newArray = doubleArrayAndReturnNew(originalArray);

        // 呼び出し元の配列には影響がないことを確認
        System.out.println("\nOriginal Array after creating a new doubled array:");
        for (int value : originalArray) {
            System.out.print(value + " ");
        }

        // 新しい配列が正しく作成されていることを確認
        System.out.println("\nNew Doubled Array:");
        for (int value : newArray) {
            System.out.print(value + " ");
        }
    }
}

この例では、doubleArrayElements メソッドは呼び出し元の配列を直接変更し、doubleArrayAndReturnNew メソッドは新しい配列を作成して返します。

「008 メソッド」問題集リスト