JAVA練習問題2-1:メソッドの基本を確認しよう

記事内に商品プロモーションを含む場合があります

JAVAの初心者向け問題2-1:メソッドの基本を確認しよう

この問題を解くために必要な知識:

【レベル1の知識】
コメントの書き方、変数と定数、基本データ型とプリミティブ型、四則演算と論理演算、入力と出力(Scannerクラス)、配列、分岐処理(if、if~else、switch)、繰り返し処理(for、while、do~while)

【レベル2の知識】
メソッドの定義と呼び出し、メソッドの戻り値、メソッドのオーバーロード例外処理(try-catch文、throws、throw)クラスの定義と使用インスタンスコンストラクタ

<<前の問題 問題集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();
    }

    public static void sayHello() {
        System.out.println("Hello, World!");
    }
}

この例では、mainメソッドの中から、sayHello()を呼び出しています。sayHello()と書くことで、先ほど定義したメソッドが実行され、”Hello, World!” が表示されます。

引数を使ったメソッド

メソッドには、引数を渡すことができます。

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

public static void greet(String name) {
    System.out.println("Hello, " + name + "!");
}

このgreetメソッドは、名前を引数として受け取り、その名前を使って挨拶を表示します。次のように呼び出します。

public class Main {
    public static void main(String[] args) {
        greet("Alice");
        greet("Bob");
    }

    public static void greet(String name) {
        System.out.println("Hello, " + name + "!");
    }
}

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

Hello, Alice!
Hello, Bob!

メソッドを使うメリット

メソッドを使うことで、以下のようなメリットがあります。

  1. コードの再利用
    一度定義したメソッドは何度でも呼び出せるので、同じ処理を繰り返し書く必要がなくなります。
  2. コードの見通しが良くなる
    複雑な処理をメソッドに分割することで、コード全体が読みやすくなります。
  3. メンテナンスがしやすい
    メソッドにまとめておけば、後から修正や改善が必要になったときに、修正箇所を簡単に特定しやすくなります。

まとめ

メソッドは、プログラムを整理し、再利用可能にするための重要な仕組みです。メソッドの基本を理解すれば、より複雑なプログラムもスムーズに書けるようになります。

今回紹介した内容はメソッドの最も基本的な部分なので、まずは自分でメソッドを定義して、呼び出してみましょう。

JAVA練習問題2-1-1_メソッドの定義と呼び出し

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

このメソッドは、数値が偶数ならば「Even」、奇数ならば「Odd」を出力します。メソッドの戻り値は考慮しなくてよいです。

この問題の要件

以下の要件に従ってプログラムを作成してください。

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

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

----- ↓出力される結果の例↓ -----

Enter a number: 5
Odd

----- ↑出力される結果の例↑ -----

この問題を解くヒント

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

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

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

1.import文
 1-1. Scannerクラスのインポート

2.Mainクラスの定義
 2-1. mainメソッド
  2-1-1. Scannerオブジェクトの作成
  2-1-2. ユーザーに数値入力を促すメッセージを表示
  2-1-3. ユーザーが入力した数値を読み取る
  2-1-4. isEvenメソッドを呼び出す

3.isEvenメソッドの定義
 3-1. 引数として整数を受け取る
 3-2. 偶数か奇数かを判定
  3-2-1. 偶数の場合の処理
  3-2-2. 奇数の場合の処理

ヒント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: ");  // ユーザーに数値入力を促すメッセージを表示
        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");  // 奇数の場合の出力
        }
    }
}

 

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

JAVA練習問題2-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練習問題2-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【コードの構成を見る】

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

1.Mainクラスの定義
 2-1. mainメソッド
  2-1-1. printNumbersメソッドを呼び出す

2.printNumbersメソッドの定義
 2-1. 1から10までの数値を表示
  2-1-1. forループの開始
  2-1-2. 数値を出力

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

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

public class Main {
    public static void main(String[] args) {
        ***ここでprintNumbersメソッドを呼び出してください***
    }

    // 1から10までの数値を表示するメソッド
    public static void printNumbers() {
        // 1から10までの数値を繰り返し表示
        ***ここで1から10までの数値を表示するためのforループを作成してください***
            ***ここで数値を出力してください***
    }
}

 

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

JAVA練習問題2-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);  // 数値を出力
        }
    }
}

********************

コードの解説

mainメソッドの定義

public static void main(String[] args) {
    printNumbers();  // printNumbersメソッドを呼び出す
}

mainメソッドは、Javaプログラムのエントリーポイントであり、プログラムの実行がここから開始されます。

publicはこのメソッドが他のクラスからもアクセス可能であることを示し、staticはクラスから直接呼び出せることを意味します。voidはこのメソッドが値を返さないことを示します。

ここでは、printNumbers()メソッドを呼び出しています。printNumbersメソッドは後で定義されており、mainメソッド内で実行されることになります。

printNumbersメソッドの定義

public static void printNumbers() {
    for (int i = 1; i <= 10; i++) {
        System.out.println(i);  // 数値を出力
    }
}

printNumbersメソッドは、1から10までの数値を順に表示する役割を持つメソッドです。このメソッドもpublicstaticが付いており、他のクラスからアクセス可能で、クラスから直接呼び出せます。

このメソッド内で使われているのは、forループです。ループの中では変数iを使って、1から10までの数値を1つずつ増やしていきます。それぞれの値がSystem.out.println(i);によって表示されます。

  • forループの構造:
    • int i = 1;: ループのカウンタ変数iを1に初期化します。
    • i <= 10;: ループが続く条件として、iが10以下であることを確認します。
    • i++: ループごとにiを1ずつ増やします。

このループはi1から10までの間、繰り返し実行され、それぞれのiの値が画面に出力されます。

<<前の問題 問題集Top 次の問題>>

この問題への質問・コメント

この問題を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    JAVA練習問題集へ戻る
    トップページへ戻る