JAVA練習問題2-2:メソッドの戻り値を理解しよう

記事内に商品プロモーションを含む場合があります

JAVAの初心者向け問題2-2:メソッドの戻り値を理解しよう

この問題を解くために必要な知識:
【レベル1の知識】
コメントの書き方、変数と定数、基本データ型とプリミティブ型、四則演算と論理演算、入力と出力(Scannerクラス)、配列、分岐処理(if、if~else、switch)、繰り返し処理(for、while、do~while)

【レベル2の知識】
メソッドの定義と呼び出し、メソッドの戻り値、メソッドのオーバーロード例外処理(try-catch文、throws、throw)クラスの定義と使用インスタンスコンストラクタ

<<前の問題 問題集Top 次の問題>>

JAVAの文法「メソッドの戻り値」とは

ここではメソッドの戻り値の意味や使い方を復習します。必要ない方はここをクリックして練習問題へ飛びましょう。



Javaプログラミングを学んでいると、メソッドの戻り値という概念に出会います。

これは、メソッドが計算や処理を行った後、その結果を呼び出し元に返すための仕組みです。

この記事では、初心者向けにメソッドの戻り値について基本的な部分を説明します。

メソッドの戻り値とは?

戻り値とは、メソッドが処理を終えたときに返す結果のことです。たとえば、ある計算をするメソッドが計算結果を返す場合、この結果が「戻り値」になります。

public static int addNumbers(int a, int b) {
    return a + b;
}

上記の例では、addNumbersというメソッドが2つの整数を受け取り、その和を計算してreturnを使って結果を返しています。この返される値が戻り値です。

戻り値の型

メソッドの戻り値には、があります。型は、メソッドがどのような種類のデータを返すのかを指定します。

例えば、整数を返す場合はint型、文字列を返す場合はString型を指定します。戻り値があるメソッドは、voidではなく具体的な型を指定する必要があります。

public static int multiply(int x, int y) {
    return x * y;  // 戻り値はint型
}

このメソッドはint型の結果を返します。引数として2つの整数を受け取り、その積を計算し、計算結果をreturnで返しています。

return文の使い方

メソッドで戻り値を返すためには、returnを使います。return文の後には、返したい値を指定します。

return文を使うと、そこでメソッドの処理が終了し、結果が返されます。

public static String greet(String name) {
    return "Hello, " + name + "!";
}

この例では、greetメソッドがString型の値(文字列)を返しています。メソッドが呼び出された際に、return文によって挨拶のメッセージが呼び出し元に返されます。

戻り値を受け取る

メソッドが戻り値を返す場合、その戻り値はメソッドを呼び出した場所で受け取ります。受け取った戻り値は、通常変数に格納され、その後の処理で利用されます。

public static void main(String[] args) {
    int result = addNumbers(5, 3);  // 戻り値を受け取って変数resultに格納
    System.out.println("結果は: " + result);  // 結果は: 8
}

このコードでは、addNumbersメソッドを呼び出し、その戻り値(5 + 3 = 8)を変数resultに格納しています。格納された値は、System.out.printlnで表示されています。

戻り値がない場合:void

戻り値が不要な場合は、メソッドの戻り値の型としてvoidを指定します。voidとは、「何も返さない」という意味です。

たとえば、単にメッセージを表示するだけのメソッドでは、戻り値を使わないので、voidを使います。

public static void printMessage() {
    System.out.println("これは戻り値を返さないメソッドです。");
}

このprintMessageメソッドは、System.out.printlnでメッセージを表示しますが、何も値を返さないため、戻り値の型としてvoidを指定しています。

戻り値の活用

戻り値は、メソッドの計算結果や処理結果を後で利用したい場合に非常に便利です。

次の例では、引数として渡された数値を2倍にするメソッドを使い、その結果を別の処理に利用しています。

public static int doubleNumber(int number) {
    return number * 2;
}

public static void main(String[] args) {
    int doubled = doubleNumber(4);  // 4の2倍を計算し、戻り値を受け取る
    System.out.println("2倍にした値: " + doubled);  // 2倍にした値: 8
}

この例では、doubleNumberメソッドが4を2倍にし、その結果をdoubled変数に返しています。その後、2倍にした結果を表示しています。

まとめ

メソッドの戻り値は、プログラムの中で計算や処理を行った結果を返すための重要な機能です。

戻り値を活用することで、メソッドが行った処理結果を後のコードで利用したり、再利用したりすることができます。

まずは戻り値のある簡単なメソッドを作成し、使い方に慣れてみましょう。




JAVA練習問題2-2-1_合計値を返すメソッドを作ろう

2つの整数をユーザーに入力させ、その合計を出力して下さい。

ただし、合計値を計算するSumTwoNumbersメソッドをmainメソッドの外に作成すること。

この問題の要件

以下の要件に従ってプログラムを完成させてください。

  • メソッドsumTwoNumbersを定義し、2つの整数を引数として受け取り、その合計を返すこと。
  • Scannerクラスを使って、ユーザーから2つの整数を入力させること。
  • 入力された整数を使って、sumTwoNumbersメソッドを呼び出し、その結果を表示すること。

また実行結果は以下のようになること。

----- ↓出力される結果の例↓ -----

2つの整数を入力してください:
5
3
5 + 3 = 8

----- ↑出力される結果の例↑ -----

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。

1.import文
 1-1. java.util.Scannerクラスのインポート
2.SumTwoNumbersクラスの定義
3.sumTwoNumbersメソッドの定義
 3-1. メソッド宣言
 3-2. メソッドの引数として2つの整数aとbを受け取る
 3-3. 引数の合計を計算して返す
4.mainメソッドの定義
 4-1. Scannerオブジェクトの作成
 4-2. ユーザーに2つの整数を入力させるためのプロンプトを表示
  4-2-1. 1つ目の整数を入力させ、変数num1に格納
  4-2-2. 2つ目の整数を入力させ、変数num2に格納
 4-3. sumTwoNumbersメソッドを呼び出し、合計を計算して変数resultに格納
 4-4. 計算結果を表示
 4-5. Scannerオブジェクトを閉じる

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

import java.util.Scanner;

public class SumTwoNumbers {

    // 2つの整数を引数として受け取り、その合計を返すメソッド
    public static int sumTwoNumbers(int a, int b) {
        // ***ここに合計を計算して返すコードを書いてください***
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // ***ここに2つの整数を入力して合計を計算するコードを書いてください***
        System.out.println("2つの整数を入力してください:");
        int num1 = scanner.nextInt();
        int num2 = scanner.nextInt();
        int result = sumTwoNumbers(num1, num2);
        System.out.println(num1 + " + " + num2 + " = " + result);

        scanner.close();
    }
}

 

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

JAVA練習問題2-2-1の解答例

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

********************

import java.util.Scanner;

public class SumTwoNumbers {

    // 2つの整数を引数として受け取り、その合計を返すメソッド
    public static int sumTwoNumbers(int a, int b) {
        // 合計を計算して返す
        return a + b;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 2つの整数を入力して合計を計算
        System.out.println("2つの整数を入力してください:");
        int num1 = scanner.nextInt();
        int num2 = scanner.nextInt();
        int result = sumTwoNumbers(num1, num2);
        System.out.println(num1 + " + " + num2 + " = " + result);

        scanner.close();
    }
}

********************

コードの解説

クラスとメソッドの定義

public class SumTwoNumbers {
    // 2つの整数を引数として受け取り、その合計を返すメソッド
    public static int sumTwoNumbers(int a, int b) {
        // 合計を計算して返す
        return a + b;
    }
  • public class SumTwoNumbers は、このプログラム全体が属するクラスを定義しています。クラスはJavaプログラムの基本単位で、コードを整理するためのコンテナのようなものです。
  • public static int sumTwoNumbers(int a, int b) は、2つの整数を受け取り、その合計を返すメソッドを定義しています。ここでは ab という2つの引数を受け取っています。
  • メソッドの戻り値: int はメソッドの戻り値の型を示しています。この場合、メソッドは整数 (int) を返します。具体的には、2つの引数 ab の合計を返すという意味です。戻り値は、呼び出した側でその結果を利用することができます。
  • return a + b; では、2つの引数 ab を加算した結果を返しています。この結果が呼び出し元に渡されます。

メインメソッド(プログラムの開始点)

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
  • public static void main(String[] args) は、Javaプログラムのエントリーポイントです。プログラムはこのメインメソッドから開始されます。
  • Scanner scanner = new Scanner(System.in); は、標準入力(キーボードからの入力)を受け取るための準備をしています。Scanner クラスは、ユーザーが入力した値を読み取るために使用されます。

ユーザーからの入力を受け取る

    System.out.println("2つの整数を入力してください:");
    int num1 = scanner.nextInt();
    int num2 = scanner.nextInt();
  • System.out.println("2つの整数を入力してください:"); で、ユーザーに対して2つの整数を入力するようにメッセージを表示しています。
  • int num1 = scanner.nextInt();int num2 = scanner.nextInt(); では、ユーザーが入力した整数をそれぞれ num1num2 に格納します。

合計を計算して表示する

    int result = sumTwoNumbers(num1, num2);
    System.out.println(num1 + " + " + num2 + " = " + result);
  • int result = sumTwoNumbers(num1, num2); では、先ほど定義した sumTwoNumbers メソッドを呼び出して、2つの整数の合計を計算しています。このメソッドは合計を返し、その結果が result という変数に格納されます。
  • System.out.println(num1 + " + " + num2 + " = " + result); では、2つの整数の合計結果を画面に表示します。例えば、ユーザーが「3」と「5」を入力した場合、「3 + 5 = 8」と表示されます。

スキャナーの終了

    scanner.close();
}

scanner.close(); では、入力を受け取るために使用した Scanner オブジェクトを閉じています。これはメモリを無駄に使わないための処理です。

JAVA練習問題2-2-2_配列の要素の合計値を返すメソッドを作ろう

配列内の要素をユーザーに入力させ、合計値を出力して下さい。

ただし合計値を計算するsumArrayElementsメソッドをmainメソッドの外に作成すること。

この問題の要件

以下の要件に従ってプログラムを完成させてください。

  • メソッドsumArrayElementsを定義し、配列を引数として受け取り、その要素の合計を返すこと。
  • Scannerクラスを使って、ユーザーから配列のサイズと要素を入力させること。
  • 入力された配列の要素を使って、sumArrayElementsメソッドを呼び出し、その結果を表示すること。

また実行結果は以下のようになること。

----- ↓出力される結果の例↓ -----

配列のサイズを入力してください:
5
配列の要素を入力してください:
1
2
3
4
5
配列の合計 = 15

----- ↑出力される結果の例↑ -----

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。

1.import文
 1-1. java.util.Scannerクラスのインポート
2.SumArrayElementsクラスの定義
3.sumArrayElementsメソッドの定義
 3-1. メソッド宣言
 3-2. メソッドの引数として配列int[] numbersを受け取る
 3-3. 合計を計算するための変数sumを初期化
 3-4. 拡張forループを使って配列の全要素を繰り返し処理し、合計を計算
 3-5. 合計を返す
4.mainメソッドの定義
 4-1. Scannerオブジェクトの作成
 4-2. ユーザーに配列のサイズを入力させるためのプロンプトを表示
  4-2-1. ユーザーから入力されたサイズを変数sizeに格納
  4-2-2. サイズsizeの配列arrayを初期化
 4-3. ユーザーに配列の要素を入力させるためのプロンプトを表示
  4-3-1. forループを使って、ユーザーから配列の各要素を入力させる
 4-4. sumArrayElementsメソッドを呼び出し、合計を計算して変数resultに格納
 4-5. 計算結果を表示
 4-6. Scannerオブジェクトを閉じる

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

import java.util.Scanner;

public class SumArrayElements {

    // 配列の要素の合計を計算して返すメソッド
    public static int sumArrayElements(int[] numbers) {
        int sum = 0;
        // ***ここに配列の全要素を繰り返し処理して合計を計算するコードを書いてください***
        return sum;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // ***ここに配列のサイズを入力するコードを書いてください***
        int[] array = new int[size];

        // ***ここに配列の要素を入力するコードを書いてください***

        int result = sumArrayElements(array);
        // ***ここに配列の合計を表示するコードを書いてください***

        scanner.close();
    }
}

 

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

JAVA練習問題2-2-2の解答例

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

********************

import java.util.Scanner;

public class SumArrayElements {

    // 配列の要素の合計を計算して返すメソッド
    public static int sumArrayElements(int[] numbers) {
        int sum = 0;
        // 配列の全要素を繰り返し処理して合計を計算
        for (int num : numbers) {
            sum += num;
        }
        return sum;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 配列のサイズを入力
        System.out.println("配列のサイズを入力してください:");
        int size = scanner.nextInt();
        int[] array = new int[size];

        // 配列の要素を入力
        System.out.println("配列の要素を入力してください:");
        for (int i = 0; i < size; i++) {
            array[i] = scanner.nextInt();
        }

        int result = sumArrayElements(array);
        System.out.println("配列の合計 = " + result);

        scanner.close();
    }
}

********************

コードの解説

クラスとメソッドの定義

public class SumArrayElements {
    // 配列の要素の合計を計算して返すメソッド
    public static int sumArrayElements(int[] numbers) {
        int sum = 0;
        // 配列の全要素を繰り返し処理して合計を計算
        for (int num : numbers) {
            sum += num;
        }
        return sum;
    }
  • public class SumArrayElements は、このプログラムのメインクラスを定義しています。
  • public static int sumArrayElements(int[] numbers) は、整数の配列を受け取り、その要素の合計を計算して返すメソッドです。
  • メソッドの戻り値: int は、このメソッドが整数を返すことを示しています。この場合、配列 numbers に含まれる全ての要素を足し合わせた結果が戻り値になります。
  • int sum = 0; では、合計を計算するための変数 sum を初期化しています。初期値は0です。
  • for (int num : numbers) では、配列 numbers の全要素を順番に取り出し、sum += num; でその要素を合計に加えています。
  • 最後に、return sum; で計算した合計値をメソッドの呼び出し元に返します。

メインメソッド(プログラムの開始点)

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
  • public static void main(String[] args) はプログラムのエントリーポイントであり、プログラムはここから実行されます。
  • Scanner scanner = new Scanner(System.in); は、ユーザーからの入力を受け取るために Scanner クラスを使用しています。

配列のサイズを入力

  • System.out.println("配列のサイズを入力してください:"); では、ユーザーに配列のサイズ(要素数)を入力するよう促します。
  • int size = scanner.nextInt(); で、ユーザーが入力した配列のサイズを size 変数に格納します。
  • int[] array = new int[size]; では、入力されたサイズに基づいて新しい整数配列 array を作成しています。この配列には、後ほどユーザーが入力する要素が格納されます。

配列の要素を入力

    // 配列の要素を入力
    System.out.println("配列の要素を入力してください:");
    for (int i = 0; i < size; i++) {
        array[i] = scanner.nextInt();
    }
  • System.out.println("配列の要素を入力してください:"); で、ユーザーに対して配列の各要素を順番に入力するよう指示します。
  • for (int i = 0; i < size; i++) では、配列の要素数分だけループを回し、array[i] = scanner.nextInt(); で各要素を入力して配列に格納します。

合計を計算して表示

    int result = sumArrayElements(array);
    System.out.println("配列の合計 = " + result);
  • int result = sumArrayElements(array); では、先ほど定義した sumArrayElements メソッドを呼び出し、配列の合計を計算します。このメソッドは配列内の全ての要素を合計して、その結果を result 変数に格納します。
  • System.out.println("配列の合計 = " + result); で、計算された合計を画面に表示します。

スキャナーの終了

    scanner.close();
}

scanner.close(); では、Scanner オブジェクトを閉じ、リソースを解放します。これにより、不要なメモリの使用を防ぎます。

このプログラムで重要なポイントは、sumArrayElements メソッドが配列の合計を計算し、その結果を返すことです。

戻り値として計算された合計値は、呼び出し元である main メソッドで result という変数に格納され、その後ユーザーに表示されます。

このように、戻り値は他の部分で活用される重要な情報です。

<<前の問題 問題集Top 次の問題>>

この問題への質問・コメント

この問題を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    JAVA練習問題集へ戻る
    トップページへ戻る