この記事で学べる知識:メソッドの定義と呼び出し
この記事の練習問題で使用する知識:
基礎文法と制御構造(レッスン1~2)、メソッドの定義と呼び出し、メソッドの戻り値、真偽値を返すメソッド、メソッドのオーバーロード、ジェネリクス
<<前のページ | 問題集Top |
次のページ>> |
JAVAの文法「メソッド」とは
ここではメソッドの意味や使い方を学習します。必要ない方はここをクリックして練習問題へ飛びましょう。
Javaプログラミングを学ぶ上で、メソッドの理解は非常に重要です。
メソッドはプログラムの中で特定の処理をまとめて、簡単に再利用できるようにするための仕組みです。
この記事ではメソッドの基本について解説します。
メソッドとは?
メソッドは、一連の処理をひとつにまとめたものです。
例えば「ある計算を行う処理」や「特定のメッセージを表示する処理」を1つのメソッドにまとめておけば、何度も同じ処理を繰り返し書かずに済みます。
プログラムを簡潔で理解しやすくするために、メソッドはとても役立ちます。
メソッドの定義
メソッドは次のような形で定義します。
public static void メソッド名() { // メソッドの中で実行される処理 }
このようにメソッドには「名前」があり、その中に処理が記述されています。
メソッドの例
例えば「Hello, World!」と表示するメソッドを作成する場合、次のように書くことができます。
public static void sayHello() { System.out.println("Hello, World!"); }
public static void
は、メソッドを定義するためのお決まりのキーワードです。今は深く考えず、「こう書くものだ」と覚えておきましょう。sayHello
はメソッドの名前です。自由に名前を付けられますが、何をするメソッドか分かりやすい名前にするのが良い習慣です。{}
の中には、実際に行う処理を書きます。この場合、System.out.println("Hello, World!");
という、メッセージを表示する処理が書かれています。
メソッドを呼び出す
メソッドは定義しただけでは実行されません。
メソッドを実行するには呼び出す必要があります。次のようにメソッド名を書いて呼び出します。
public class Main { public static void main(String[] args) { //メインメソッド sayHello(); // sayHelloメソッドを呼び出す } public static void sayHello() { //sayHelloメソッドの定義 System.out.println("Hello, World!"); } }
この例ではmain
メソッドの中から、外にあるsayHello()
メソッドを呼び出しています。
sayHello()
と書くことで先ほど定義したメソッドが実行され、”Hello, World!” が表示されます。
引数を使ったメソッド
メソッドには引数を渡すことができます。引数とはメソッドに渡される追加の情報です。
例えば特定の名前を表示するメソッドを作る場合、引数を使うことでメソッドをより汎用的にできます。
public static void greet(String name) { //greetメソッドの定義。()の中が引数。 System.out.println("Hello, " + name + "!"); }
このgreet
メソッドは名前を引数として受け取り、その名前を使って挨拶を表示します。
次のように呼び出します。
public class Main { public static void main(String[] args) { //メインメソッド greet("Alice"); //greetメソッドに引数Aliceを渡して実行 greet("Bob"); //greetメソッドに引数Bobを渡して実行 } public static void greet(String name) { //greetメソッドの定義 System.out.println("Hello, " + name + "!"); } }
このプログラムを実行すると次のように表示されます。
Hello, Alice! Hello, Bob!
メソッドを使うメリット
メソッドを使うことで以下のようなメリットがあります。
- コードの再利用
一度定義したメソッドは何度でも呼び出せるので、同じ処理を繰り返し書く必要がなくなります。 - コードの見通しが良くなる
複雑な処理をメソッドに分割することで、コード全体が読みやすくなります。 - メンテナンスがしやすい
メソッドにまとめておけば、後から修正や改善が必要になったときに、修正箇所を簡単に特定しやすくなります。
まとめ
メソッドはプログラムを整理し、再利用可能にするための重要な仕組みです。
メソッドの基本を理解すればより複雑なプログラムもスムーズに書けるようになります。
今回紹介した内容はメソッドの最も基本的な部分なので、まずは自分でメソッドを定義して、呼び出してみましょう。
JAVA練習問題3-1-1_メソッドの定義と呼び出し
ユーザー数値を入力し、その数値が偶数か奇数かを判定するメソッド isEven
を作成してください。
このメソッドは数値が偶数ならば「Even」、奇数ならば「Odd」を出力します。
この問題の要件
以下の要件に従ってプログラムを作成してください。
- ユーザーから整数を入力するために
Scanner
クラスを使用すること。 - 入力された整数が偶数か奇数かを判定するメソッド
isEven
を定義すること。 - 偶数の場合は “Even”、奇数の場合は “Odd” と表示すること。
- メソッドの戻り値は使用しないこと。
ただし、以下のような実行結果となること。
----- ↓出力される結果の例↓ -----
Enter a number: 5 Odd
----- ↑出力される結果の例↑ -----
この問題を解くヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
正解のコードは上から順に以下のような構成となっています。
1:Scannerクラスをインポート
2:Mainクラスの定義
□ mainメソッドの定義
□ □ Scannerオブジェクトscannerの初期化
□ □ 「Enter a number: 」と出力
□ □ ユーザーの入力を整数として読み取り、変数numberに代入
□ □ isEvenメソッドを呼び出す
□ isEvenメソッドの定義
□ □ if文でnumberが偶数か奇数かを判定
□ □ □ 真の場合、「Even」と出力
□ □ else
□ □ □ 偽の場合、「Odd」と出力
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // Scannerオブジェクトを作成 System.out.print("Enter a number: "); // ユーザーに数値入力を促すメッセージを表示 /*【穴埋め問題1】 ここにscannerを使用して入力を読み取り、変数numberに整数として格納するコードを書いてください。 */ isEven(number); // isEvenメソッドを呼び出す } /*【穴埋め問題2】 ここにisEvenメソッドの定義とその中でnumberが偶数か奇数かを判定し、それぞれ適切なメッセージを出力するコードを書いてください。 */ }
この問題の穴埋めコードは以上です。
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
JAVA練習問題3-1-1の解答例
この問題の一つの正解例とそのコードの解説を以下に示します。
正解コードの例
例えば以下のようなプログラムが考えられます。
********************
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // Scannerオブジェクトを作成 System.out.print("Enter a number: "); // ユーザーに数値入力を促すメッセージを表示 int number = scanner.nextInt(); // ユーザーが入力した数値を読み取る isEven(number); // isEvenメソッドを呼び出す } // 偶数か奇数かを判定するメソッド public static void isEven(int number) { // numberが偶数かどうかをチェック if (number % 2 == 0) { System.out.println("Even"); // 偶数の場合の出力 } else { System.out.println("Odd"); // 奇数の場合の出力 } } }
********************
コードの解説
Scannerクラスのインポート
import java.util.Scanner;
この行では、Scanner
クラスをインポートしています。Scanner
は、ユーザーからの入力を読み取るために使います。
java.util
パッケージに含まれており、インポートすることで、プログラム内でこのクラスを使用できるようになります。
mainメソッドの定義
public static void main(String[] args) {
main
メソッドはJavaプログラムのエントリーポイントです。すべてのJavaプログラムは、このmain
メソッドから実行が開始されます。
public
はこのメソッドが他のクラスからもアクセス可能であることを示し、static
はインスタンス化せずに呼び出せることを意味します。
void
はこのメソッドが値を返さないことを示しています。(詳細は次の記事を参照)
Scannerオブジェクトの作成と入力促し
Scanner scanner = new Scanner(System.in); System.out.print("Enter a number: ");
Scanner scanner = new Scanner(System.in);
では、scanner
という名前のScanner
オブジェクトを作成しています。System.in
は、キーボードからの入力を受け取るための標準入力ストリームを示します。
次にSystem.out.print("Enter a number: ");
で、ユーザーに数値を入力するよう促すメッセージを表示しています。
ユーザー入力の取得
int number = scanner.nextInt();
この行ではユーザーが入力した数値を取得し、number
という整数型変数に格納しています。
nextInt()
は入力されたデータを整数型として読み取るメソッドです。
isEvenメソッドの呼び出し
isEven(number);
isEven
という名前のメソッドを呼び出しています。このメソッドには先ほど取得したnumber
が引数として渡されます。
メソッドの呼び出しによってプログラムの流れはisEven
メソッドに移動します。
isEvenメソッドの定義
public static void isEven(int number) { if (number % 2 == 0) { System.out.println("Even"); } else { System.out.println("Odd"); } }
この部分はisEven
メソッドの定義です。
このメソッドはnumber
が偶数か奇数かを判定します。メソッドの定義には以下の要素があります:
public
: 他のクラスからアクセスできるメソッドであることを示します。static
: このメソッドがクラスそのものに属し、インスタンス化しなくても呼び出せることを意味します。void
: このメソッドが値を返さないことを示します。int number
: メソッドが呼び出された際に、整数型の引数を1つ受け取ります。
メソッド内のif
文では、number
が偶数かどうかを%
演算子を使って確認しています。
%
は剰余演算子でnumber
を2で割ったときの余りが0なら偶数、そうでなければ奇数であることを示しています。
まとめ
このコードはユーザーに数値を入力させ、その数値が偶数か奇数かを判定するシンプルなプログラムです。
重要な部分はisEven
メソッドの定義と呼び出しです。
このメソッドは引数として受け取った数値を元に、条件分岐を使って偶数か奇数かを出力します。
JAVA練習問題3-1-2_繰り返し処理とメソッド
1から10までの数値を表示するメソッド printNumbers
を作成し、そのメソッドを呼び出してください。
このメソッドは1から10までの数値を一行ずつ出力します。
この問題の要件
以下の要件に従ってプログラムを完成させてください。
printNumbers
というメソッドを定義し、このメソッド内で1から10までの数値を順に表示すること。main
メソッドからprintNumbers
メソッドを呼び出すこと。- 繰り返し処理には
for
ループを使用すること。
ただし、以下のような実行結果となること。
----- ↓出力される結果の例↓ -----
1 2 3 4 5 6 7 8 9 10
----- ↑出力される結果の例↑ -----
この問題を解くヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
正解のコードは上から順に以下のような構成となっています。
1:Mainクラスの定義
□ mainメソッドの定義
□ □ printNumbersメソッドを呼び出す
□ printNumbersメソッドの定義
□ □ forループにより1から10までの数値を繰り返し表示
□ □ □ ループ内で数値を出力する
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
public class Main { public static void main(String[] args) { /*【穴埋め問題1】 ここでprintNumbersメソッドを呼び出してください。 */ } // 1から10までの数値を表示するメソッド public static void printNumbers() { // 1から10までの数値を繰り返し表示 /*【穴埋め問題2】 ここにforループを使って1から10までの数値を出力するコードを書いてください。 */ } }
この問題の穴埋めコードは以上です。
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
JAVA練習問題3-1-2の解答例
この問題の一つの正解例とそのコードの解説を以下に示します。
正解コードの例
例えば以下のようなプログラムが考えられます。
********************
public class Main { public static void main(String[] args) { printNumbers(); // printNumbersメソッドを呼び出す } // 1から10までの数値を表示するメソッド public static void printNumbers() { // 1から10までの数値を繰り返し表示 for (int i = 1; i <= 10; i++) { System.out.println(i); // 数値を出力 } } }
********************
コードの解説
このプログラムは「1から10までの数値を順番に表示する」シンプルなJAVAコードです。
以下に各部分について詳しく解説します。
- クラスの定義
public class Main {
この行はJAVAクラスを定義しています。クラスはJAVAプログラムの基本的な構造で、コードをまとめるための入れ物と考えてください。ここでは、クラスの名前を「Main」としています。 - mainメソッドの定義
public static void main(String[] args) {
この行はプログラムのエントリーポイントです。JAVAプログラムはmainメソッドから実行を開始します。main
メソッドは、プログラムを動かす「入口」のようなものです。 - メソッドの呼び出し
printNumbers(); // printNumbersメソッドを呼び出す
ここではprintNumbers()
というメソッドを呼び出しています。メソッドは処理をまとめて定義したもので、この行によってprintNumbers
メソッドが実行され、1から10までの数値が表示されるようになります。 - printNumbersメソッドの定義
public static void printNumbers() {
printNumbers
は1から10までの数値を順番に表示するメソッドです。このメソッドはmain
メソッドから呼び出されることで実行されます。 - forループによる繰り返し処理
for (int i = 1; i <= 10; i++) {
ここで使われているfor
ループは、指定された回数だけ繰り返す構文です。int i = 1
でカウンタ変数i
を1から始め、i <= 10
が真である限り繰り返します。ループが1回実行されるたびにi++
によってi
が1ずつ増加します。 - 数値の出力
System.out.println(i); // 数値を出力
この行は、現在のi
の値を画面に出力する役割を持っています。ループのたびに1から10までの値が順番に出力されます。System.out.println()
は、標準出力にメッセージや値を表示するための基本的なメソッドです。
<<前のページ |
問題集Top |
次のページ>> |
この問題への質問・コメント
この問題を作成するにあたりAIを活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。