【JAVA】レッスン3-02:メソッドの戻り値を理解しよう

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

この記事で学べる知識:メソッドの戻り値

この記事の練習問題で使用する知識:
基礎文法と制御構造(レッスン1~2)メソッドの定義と呼び出しメソッドの戻り値真偽値を返すメソッドメソッドのオーバーロードジェネリクス

<<前のページ 問題集Top 次のページ>>

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

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



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

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

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

メソッドの戻り値とは?

戻り値とは、メソッドが処理を終えたときに返す結果のことです。

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

public static int addNumbers(int a, int b) { //addNumbersメソッドの定義
    return a + b; //計算結果(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文を使うとそこでメソッドの処理が終了し、結果が返されます。

//String型の引数を使ってString型の戻り値を返すgreetメソッド
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) { //doubleNumberメソッド
    return number * 2;
}

public static void main(String[] args) { //メインメソッド
    int doubled = doubleNumber(4);  // doubleNumberメソッドに4を送り、戻り値を変数doubledに格納
    System.out.println("2倍にした値: " + doubled);  // 2倍にした値: 8
}

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

その後、2倍にした結果を表示しています。

まとめ

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

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

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

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

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

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

この問題の要件

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

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

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

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

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

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

この問題を解くヒント

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

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

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

1:Scannerクラスをインポート
2:SumTwoNumbersクラスの定義
  □ sumTwoNumbersメソッドの定義
  □ □ 引数aとbを合計してその結果を返す
  □ mainメソッドの定義
  □ □ Scannerオブジェクトscannerの初期化
  □ □ 「2つの整数を入力してください:」と出力
  □ □ 最初の入力を整数として読み取り、変数num1に代入
  □ □ 次の入力を整数として読み取り、変数num2に代入
  □ □ sumTwoNumbersメソッドを呼び出し、合計結果を変数resultに代入
  □ □ 「num1 + num2 = result」の形式で計算結果を出力

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

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

import java.util.Scanner;

public class SumTwoNumbers {

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

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

        // 2つの整数を入力して合計を計算
        System.out.println("2つの整数を入力してください:");
        /* 【穴埋め問題2】
        ここに最初の整数を入力し、変数num1に代入するコードを書いてください。
        */
        /* 【穴埋め問題3】
        ここに次の整数を入力し、変数num2に代入するコードを書いてください。
        */
        /* 【穴埋め問題4】
        ここでsumTwoNumbersメソッドを呼び出し、その結果を変数resultに代入するコードを書いてください。
        */
        System.out.println(num1 + " + " + num2 + " = " + result);

    }
}

この問題の穴埋めコードは以上です。

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

JAVA練習問題3-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クラスのインポー

import java.util.Scanner;

最初にScannerクラスをインポートします。

ScannerはJava標準ライブラリに含まれているクラスで、ユーザーからの入力を受け取る際に使用します。

クラスの定義

public class SumTwoNumbers {

SumTwoNumbersという名前のクラスを定義しています。

クラスはJavaプログラムの基本構造で、コード全体をグループ化する役割を持ちます。

sumTwoNumbersメソッドの定義

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

sumTwoNumbersというメソッドが定義されています。

このメソッドは引数として2つの整数abを受け取り、その合計を計算して返します。メソッドには以下の特徴があります:

  • 戻り値の型intとして指定されています。メソッドは2つの整数の合計(整数型)を返すことが期待されています。
  • 戻り値return a + b;で、合計を計算しその結果を呼び出し元に返します。メソッドの戻り値は、メソッドが計算や処理を行い、最後にその結果を提供するためのもので、この例では計算結果(合計)が戻り値として使われています。

mainメソッドの定義

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

mainメソッドはJavaプログラムのエントリーポイントです。

このメソッドがプログラムの最初に実行され、ここからコードがスタートします。

Scannerオブジェクトscannerが初期化され、ユーザーからの入力を受け取る準備が整います。

ユーザーへの入力プロンプトと変数の初期化

System.out.println("2つの整数を入力してください:");
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();

この部分ではユーザーに2つの整数の入力を促し、入力された値をnum1num2という変数に格納します。

scanner.nextInt()はユーザーが入力した整数を読み取り、各変数に代入します。

メソッド呼び出しと結果の表示

int result = sumTwoNumbers(num1, num2);
System.out.println(num1 + " + " + num2 + " = " + result);

ここでsumTwoNumbersメソッドが呼び出され、num1num2の合計が計算されます。

その結果はresultという変数に格納され、最後に計算結果を表示します。

式全体を表示するためにnum1num2の合計が「=」記号とともに表示されます。

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

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

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

この問題の要件

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

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

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

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

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

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

この問題を解くヒント

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

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

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

1:Scannerクラスをインポート
2:SumArrayElementsクラスの定義
  □ sumArrayElementsメソッドの定義
  □ □ 変数sumに0を代入
  □ □ for-eachループで配列の全要素を繰り返し処理
  □ □ □ 変数sumにnumの値を加算
  □ □ sumの値を返す
  □ mainメソッドの定義
  □ □ Scannerオブジェクトscannerの初期化
  □ □ 「配列のサイズを入力してください:」と出力
  □ □ 最初の入力を整数として読み取り、変数sizeに代入
  □ □ sizeをサイズとするint型配列arrayを作成
  □ □ 「配列の要素を入力してください:」と出力
  □ □ forループでsize回繰り返す
  □ □ □ scannerを使用して配列arrayの各要素に整数を入力
  □ □ sumArrayElementsメソッドを呼び出し、配列の合計を変数resultに代入
  □ □ 「配列の合計 = result」の形式で計算結果を出力

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

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

import java.util.Scanner;

public class SumArrayElements {

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

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

        // 配列のサイズを入力
        System.out.println("配列のサイズを入力してください:");
        /* 【穴埋め問題2】
        ここに配列のサイズを読み取り、変数sizeに代入するコードを書いてください。
        */
        int[] array = new int[size];

        // 配列の要素を入力
        System.out.println("配列の要素を入力してください:");
        /* 【穴埋め問題3】
        ここでforループを使って配列の要素を入力し、arrayに代入するコードを書いてください。
        */

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

この問題の穴埋めコードは以上です。

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

JAVA練習問題3-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クラスのインポート

import java.util.Scanner;

Scannerクラスをインポートしています。

Scannerはユーザーからの入力を受け取るためのJava標準ライブラリのクラスで、このプログラムではユーザーが入力する整数値の取得に使用します。

クラスの定義

public class SumArrayElements {

SumArrayElementsというクラスを定義しています。

Javaではすべてのコードはクラスの中に記述されます。このクラスがこのプログラム全体を表しています。

sumArrayElementsメソッドの定義

public static int sumArrayElements(int[] numbers) {
    int sum = 0;
    for (int num : numbers) {
        sum += num;
    }
    return sum;
}

このメソッドは配列の全ての要素を合計して、その合計値を返す役割を持っています。

  • 引数int[] numbersは整数の配列(int型の配列)であり、ここに合計を計算する対象の数値が含まれています。
  • 変数sumの初期化int sum = 0;で、合計を保持する変数sumを0で初期化しています。
  • for-eachループfor (int num : numbers)で配列の各要素を1つずつ取り出してsumに加算していきます。
  • 戻り値return sum;で、最終的に合計値を呼び出し元に返します。このメソッドの戻り値は、メソッドの計算結果を提供するために使われ、ここでは計算された合計値が戻り値として提供されます。戻り値を使うことで、メソッドの結果を他の部分でも活用できるようになります。

mainメソッドの定義

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

mainメソッドはJavaプログラムが最初に実行する部分です。

ここではScannerオブジェクトを初期化し、ユーザーからの入力を受け取る準備をします。

配列のサイズを入力

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

ここでは配列のサイズをユーザーに入力させ、そのサイズに基づいてarrayという名前の整数配列を作成します。

  • 配列のサイズint size = scanner.nextInt();で、ユーザーが入力した整数値を配列のサイズとして利用します。
  • 配列の作成new int[size]で、指定されたサイズの整数配列を作成します。

配列の要素を入力

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

ユーザーに配列の各要素を入力させる部分です。

  • forループfor (int i = 0; i < size; i++)で、配列のサイズ分だけ繰り返し処理を行います。
  • 配列の各要素の入力array[i] = scanner.nextInt();で、ユーザーからの入力を配列の各要素に格納しています。

合計の計算と結果の表示

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

ここでsumArrayElementsメソッドを呼び出し、配列の合計を計算しています。

  • メソッド呼び出しint result = sumArrayElements(array);で、配列arrayを引数としてメソッドsumArrayElementsを呼び出します。このメソッドの戻り値がresultに格納されます。
  • 結果の表示System.out.println("配列の合計 = " + result);で、計算された合計を表示します。
<<前のページ 問題集Top 次のページ>>

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

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

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






    JAVAテキスト&問題集へ戻る
    トップページへ戻る