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

ながみえ

一つ前のページではメソッドの基本について学習しました。

今回は メソッドの戻り値 について見ていきましょう。

Lesson1:基礎文法編
Lesson2:制御構造編
Lesson3:メソッド編

 ・Lesson3-1:メソッドの基本を確認しよう
 ・Lesson3-2:メソッドの戻り値を理解しよう ◁今回はココ
 ・Lesson3-3:真偽値を返すメソッドを理解しよう
 ・Lesson3-4:メソッドのオーバーロードを理解しよう
 ・Lesson3-5:ジェネリクスを理解しよう
 ・確認問題3-☆1:石取りゲームを作ろう
 ・確認問題3-☆2:丁半賭博ゲームを作ろう
Lesson4:コレクション編
Lesson5:クラス

<<前のページ

学習記事一覧

次のページ>>

メソッドの戻り値の基礎|型・void・return文の使い方を解説

プログラムにおいてメソッドは、処理をまとめて再利用できる便利な仕組みですが、その処理結果を呼び出し元へ返すためには戻り値の仕組みを理解する必要があります。

Javaではreturn文を使ってメソッドの処理結果を返し、その値を変数に代入したり、他の処理に利用したりできます。

本記事では戻り値の基本概念から、具体的なコード例までを初心者向けにわかりやすく解説します。

これを学べば、メソッドを単なる処理の塊として使うだけでなく、柔軟に結果を活用できるコードが書けるようになるでしょう。

それでは、戻り値を自在に操るスキルを身につけていきましょう。

戻り値とは何か?|メソッドが返す値とその仕組み

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

メソッドの処理を記載する部分に returnキーワード を使って指定する値が戻り値となります。

public static 戻り値の型 メソッド名(引数の型 引数) {
    return 戻り値;
}

たとえば、2つの整数を足し算してその結果を返す場合を見てみましょう。

public static int addNumbers(int a, int b) { // addNumbersメソッドの定義
    return a + b;	//計算結果(a+b)が戻り値
}

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

またメソッド名の前に int と書くことで、戻り値を整数型に指定しています。

戻り値がないメソッドの型|voidの意味と使い方

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

例えば整数を返す場合はint型、文字列を返す場合はString型を指定します。

ここで、ひとつ前のレッスンで学習した「戻り値のないメソッド(returnキーワードを使わないメソッド)」では型を void としていたことを思い出してください。

戻り値がある場合はその型を、ない場合はvoidを書く必要があります。

public static int multiply1(int x, int y) {		// 戻り値があるメソッド
    return x * y;
}
public static void multiply2(int x, int y) {	// 戻り値がないメソッド
    System.out.println(x * y);
}

このメソッドはint型の結果を返します。

引数として2つの整数を受け取り、その積を計算して計算結果をreturnで返しています。

戻り値を変数に代入する方法|コード例を用いて解説

メソッドが戻り値を返す場合、その戻り値はメソッドを呼び出した場所で受け取ります。

受け取った戻り値は通常変数に格納され、その後の処理で利用されます。

public static void main(String[] args) {	// メインメソッド
    型 変数 = メソッド名(引数);	// メソッドを呼び出し、戻り値を受け取って変数に格納
}

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

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

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

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

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

まとめ|処理結果を活かすコード設計の基礎

今回の学習では、メソッドが返す値を表す戻り値の仕組み、戻り値がない場合に使うvoid型の意味、そして戻り値を変数に受け取って活用する方法を学びました。

これらを理解することで、メソッドを単なる処理の塊として使うだけでなく、処理結果を自在に扱えるプログラムが書けるようになります。

コードの柔軟性や再利用性を高められるこの知識は、今後のJava学習や実践的な開発で大きな力となるでしょう。

ここで得たスキルを土台に、さらに一歩進んだプログラミングへ挑戦していきましょう。

練習問題|合計値を返すメソッドを作ろう

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

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

この問題の要件

以下の要件に従ってコードを完成させてください。

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

ただし、以下のような実行結果となること。

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

この問題を解くヒント

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

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

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

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

Q
ヒント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);

    }
}

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

練習問題の解答と解説

この問題の正解コードとその解説は以下の通りです。

クリックして開いて確認してください。

Q
正解コード
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);

    }
}
Q
正解コードの解説

コードをブロックごとに分割して解説します。

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学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

学習記事一覧

次のページ>>

記事URLをコピーしました