【Java】レッスン3-1:メソッドの基礎を理解しよう

ながみえ

一つ前の章ではJavaの制御構造について学習しました。

今回からは メソッド について見ていきましょう。

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

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

<<前のページ

学習記事一覧

次のページ>>

メソッドの基本|定義と呼出し方の初心者向け解説

プログラムを組んでいると、同じ処理を何度も書かなければならない場面によく出くわします。そんなときに活躍するのがメソッドです。

メソッドは処理のまとまりに名前をつけて定義し、必要なときに呼び出せる仕組みで、Javaプログラムの再利用性や可読性を大きく高めます。

本記事では、メソッドの基本的な定義方法と呼び出し方法、引数や戻り値の使い方までを初心者にもわかりやすく解説します。

これを学べば、無駄なコードの繰り返しを減らし、効率的で整理されたプログラムを書く力が身につくでしょう。

それでは、実践的なJavaプログラミングへの第一歩を踏み出しましょう。

メソッドとは何か?|役割と定義方法の初心者向け解説

メソッド は、一連の処理をひとつにまとめたものです。

例えば「ある計算を行う処理」や「特定のメッセージを表示する処理」を1つのメソッドにまとめておけば、何度も同じ処理を繰り返し書かずに済みます。

プログラムを簡潔で理解しやすくするために、メソッドはとても役立ちます。

メソッドは次のような形で定義します。

public static void メソッド名() {
    // メソッドの中で実行される処理
}

このようにメソッドには「名前」があり、その中に処理が記述されています。

メソッドを定義して呼び出す例|sayHelloメソッドを作ろう

例えば、単純に「Hello, World!」と出力するだけのメソッドを作成する例を考えてみましょう。

以下のコードを、メインメソッドの外に書きます。

public static void sayHello() {			 // 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()メソッドを呼び出しています。

すなわち、このコードを実行すると以下のように出力されます。

Hello, World!

引数付きメソッドの使い方|値を渡して処理を柔軟にする方法

メソッドには 引数 を渡すことができます。引数とはメソッドに渡される追加の情報です。

例えば特定の名前を表示するメソッドを作る場合、引数を使うことでメソッドをより汎用的にできます。

public static void メソッド名(型 引数) { // 引数を持つメソッドの定義
    // メソッドの中で実行される処理
}

例えば、人の名前を引数として受け取ってあいさつ文を表示するメソッドを考えてみましょう。

public class Main {
    public static void main(String[] args) {	// メインメソッド
        greet("Taro");		// greetメソッドに引数Taroを渡して実行
        greet("Jiro");		// greetメソッドに引数Jiroを渡して実行
        greet("Saburo");	// greetメソッドに引数Saburoを渡して実行
    }
    public static void greet(String name) {		// String型の引数nameを持つgreetメソッドの定義
        System.out.println("Hello, " + name + "!");
    }
}

このプログラムを実行すると次のように表示されます。

Hello, Taro!
Hello, Jiro!
Hello, Saburo!

このように、同じメソッドに異なる引数を渡すことで、その引数に応じた処理を実行することができます。

また、同じ処理をgreetメソッドを使わずに出力しようとすると何度も出力のコードを書く必要があるところが、greetメソッドによってコードが短く簡潔になっている点にも着目しましょう。

メソッドの処理内容が多く複雑になるほどに、このメリットは大きくなります。

まとめ|コードの再利用性と可読性を高める基礎

下記の図はこれから学習していく第3章メソッド編の内容をまとめたものです。

本記事では一番上のメソッド1について学習しました。

今回の学習では、メソッドの基本的な役割と定義方法、呼び出し方、そして引数を使った柔軟な処理の作り方を学びました。

これにより同じ処理を繰り返し書く必要がなくなり、コードの再利用性や可読性を高められるようになります。

自分が書くプログラムを整理し、保守しやすい形にできるスキルは、これからのJava学習において大きな武器になります。

この基礎を足がかりに、より複雑で実践的なプログラムへと挑戦していきましょう。

練習問題|isEvenメソッドで偶数・奇数を判定するプログラム

ユーザー数値を入力し、その数値が偶数か奇数かを判定するメソッド isEven を作成してください。

このメソッドは数値が偶数ならば「Even」、奇数ならば「Odd」を出力します。

この問題の要件

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

  • ユーザーから整数を入力するために Scanner クラスを使用すること。
  • 入力された整数が偶数か奇数かを判定するメソッド isEven を定義すること。
  • 偶数の場合は “Even”、奇数の場合は “Odd” と表示すること。
  • メソッドの戻り値は使用しないこと。

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

Enter a number: 5
Odd

この問題を解くヒント

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

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

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

1:Scannerクラスをインポート
2:Mainクラスの定義
  □ mainメソッドの定義
  □ □ Scannerオブジェクトscannerの初期化
  □ □ 「Enter a number: 」と出力
  □ □ ユーザーの入力を整数として読み取り、変数numberに代入
  □ □ isEvenメソッドを呼び出す
  □ isEvenメソッドの定義
  □ □ if文でnumberが偶数か奇数かを判定
  □ □ □ 真の場合、「Even」と出力
  □ □ else
  □ □ □ 偽の場合、「Odd」と出力

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

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

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が偶数か奇数かを判定し、それぞれ適切なメッセージを出力するコードを書いてください。
    */
}

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

練習問題1の解答と解説

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

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

Q
正解コード
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");  // 奇数の場合の出力
        }
    }
}
Q
正解コードの解説

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

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なら偶数、そうでなければ奇数であることを示しています。

もっと分かりやすい学習サイトにするために

この記事を読んで「ここが分かりにくかった」「ここが難しかった」等の意見を募集しています。

世界一わかりやすいJava学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

学習記事一覧

次のページ>>

記事URLをコピーしました