【Java】レッスン3-02:戻り値とreturn文の基本をマスターしよう

一つ前のページではメソッドの基本について学習しました。
今回は メソッドの戻り値 について見ていきましょう。
Lesson1:基礎文法編
Lesson2:制御構造編
Lesson3:メソッド編
・Lesson3-1:メソッドの基本を確認しよう
・Lesson3-2:メソッドの戻り値を理解しよう ◁今回はココ
・Lesson3-3:真偽値を返すメソッドを理解しよう
・Lesson3-4:メソッドのオーバーロードを理解しよう
・Lesson3-5:ジェネリクスを理解しよう
・確認問題3-☆1:石取りゲームを作ろう
・確認問題3-☆2:丁半賭博ゲームを作ろう
Lesson4:コレクション編
Lesson5:クラス編
Javaの戻り値とは?基本からreturn文の使い方まで解説

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倍にした結果を表示しています。
戻り値のまとめ|次に学ぶべきポイント

メソッドの戻り値は、プログラムの中で計算や処理を行った結果を返すための重要な機能です。
戻り値を活用することでメソッドが行った処理結果を後のコードで利用したり、再利用したりすることができます。
まずは戻り値のある簡単なメソッドを作成し、使い方に慣れてみましょう。
練習問題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); } }
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
練習問題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つの整数
a
とb
を受け取り、その合計を計算して返します。メソッドには以下の特徴があります:- 戻り値の型:
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つの整数の入力を促し、入力された値を
num1
とnum2
という変数に格納します。scanner.nextInt()
はユーザーが入力した整数を読み取り、各変数に代入します。メソッド呼び出しと結果の表示
int result = sumTwoNumbers(num1, num2); System.out.println(num1 + " + " + num2 + " = " + result);
ここで
sumTwoNumbers
メソッドが呼び出され、num1
とnum2
の合計が計算されます。その結果は
result
という変数に格納され、最後に計算結果を表示します。式全体を表示するために
num1
とnum2
の合計が「=」記号とともに表示されます。 - 戻り値の型:
練習問題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); } }
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
練習問題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
メソッドを呼び出し、配列の合計を計算しています。- 結果の表示:
System.out.println("配列の合計 = " + result);
で、計算された合計を表示します。 - メソッド呼び出し:
int result = sumArrayElements(array);
で、配列array
を引数としてメソッドsumArrayElements
を呼び出します。このメソッドの戻り値がresult
に格納されます。
- 引数: