この記事で学べる知識:メソッドの戻り値
この記事の練習問題で使用する知識:
基礎文法と制御構造(レッスン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:Scannerクラスをインポート
2:SumTwoNumbersクラスの定義
□ sumTwoNumbersメソッドの定義
□ □ 引数aとbを合計してその結果を返す
□ mainメソッドの定義
□ □ Scannerオブジェクトscannerの初期化
□ □ 「2つの整数を入力してください:」と出力
□ □ 最初の入力を整数として読み取り、変数num1に代入
□ □ 次の入力を整数として読み取り、変数num2に代入
□ □ sumTwoNumbersメソッドを呼び出し、合計結果を変数resultに代入
□ □ 「num1 + num2 = result」の形式で計算結果を出力
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
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つの整数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
の合計が「=」記号とともに表示されます。
JAVA練習問題3-2-2_配列の要素の合計値を返すメソッドを作ろう
配列内の要素をユーザーに入力させ、合計値を出力して下さい。
ただし合計値を計算するsumArrayElementsメソッドをmainメソッドの外に作成すること。
この問題の要件
以下の要件に従ってプログラムを完成させてください。
- メソッド
sumArrayElements
を定義し、配列を引数として受け取り、その要素の合計を返すこと。 Scanner
クラスを使って、ユーザーから配列のサイズと要素を入力させること。- 入力された配列の要素を使って、
sumArrayElements
メソッドを呼び出し、その結果を表示すること。
また実行結果は以下のようになること。
----- ↓出力される結果の例↓ -----
配列のサイズを入力してください: 5 配列の要素を入力してください: 1 2 3 4 5 配列の合計 = 15
----- ↑出力される結果の例↑ -----
この問題を解くヒント
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」の形式で計算結果を出力
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
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を活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。