この記事で学べること

  • 引数とは何か、なぜ必要なのか
  • メソッドに値を渡す方法
  • 戻り値とは何か、return の使い方
  • 引数と戻り値を組み合わせたメソッドの作り方
  • よくあるエラーと解決方法

はじめに – 今日やること

前回の振り返りです!

前回は、メソッドの基本を学びました。

「処理をまとめて、何度も使い回せる」のがメソッドでしたね。greet() のように、一度作れば名前を呼ぶだけで何度でも実行できました。

ここまでで「変数 + if文 + 繰り返し + 配列 + メソッド」が揃っています。

そして今回は、メソッドをさらに強力にする 引数(ひきすう)戻り値(もどりち) を学びます!

前回の記事の最後に、こんなコードをチラッと見せたのを覚えていますか?

int result = add(3, 5);  // resultに 8 が入る

「えっ、なにこれ?さっきと書き方が違う!」と思った方もいるかもしれません。

実はこれ、メソッドに数字(3と5)を渡して、計算結果(result)を返してもらっているんです。

今日はこの仕組みを、ゆっくり丁寧に解き明かしていきます!

今日のゴール

  • メソッドに値を渡せるようになる(引数)
  • メソッドから結果を受け取れるようになる(戻り値)
  • 引数と戻り値を組み合わせて、便利なメソッドが作れる

焦らず、ゆっくり進めていきましょう!

引数って何? なぜ必要?

引数がないと、こんなに不便!

前回作った greet() メソッドを思い出してください。

static void greet() {
    System.out.println("こんにちは!");
}

これは「こんにちは!」と表示するだけのメソッドでしたよね。

でも、もし 相手の名前を付けてあいさつしたい としたらどうでしょう?

static void greetTanaka() {
    System.out.println("こんにちは、田中さん!");
}

static void greetSato() {
    System.out.println("こんにちは、佐藤さん!");
}

static void greetSuzuki() {
    System.out.println("こんにちは、鈴木さん!");
}

これでは、メソッドを使ってコードをまとめた意味がなくなってしまうどころか、不便にまでなってしまいます。
100人いたら100個のメソッド….作るのも大変(笑)

引数を使えば、こんなに便利!

そこで登場するのが 引数(ひきすう) です!

引数を使うと、メソッドに「名前」を渡せるようになります。

static void greet(String name) {
    System.out.println("こんにちは、" + name + "さん!");
}

そして、呼び出すときに名前を渡します:

greet("田中");
greet("佐藤");
greet("鈴木");

実行結果:

こんにちは、田中さん!
こんにちは、佐藤さん!
こんにちは、鈴木さん!

たった1つのメソッドで、どんな名前にも対応できました!

メソッドに渡す「田中」「佐藤」のような値、これが 引数 です。

引数とは

引数は、メソッドに渡す「材料」のようなものです。

料理で例えると、こんなイメージです:

  • 「ジュースを作るメソッド」に、「りんご」を渡す → りんごジュース
  • 同じメソッドに、「みかん」を渡す → みかんジュース

メソッドという「機械」に、引数という「材料」を渡すと、材料に応じた結果が出てくる。

つまり引数は、「メソッドの動きを、渡す値によって変えられる仕組み」 なんです。

それでは、引数の使い方をもう少し詳しく見ていきましょう!

引数の基本 – 受け取り方と使い方

引数の書き方

引数を使うメソッドは、こう書きます:

static void メソッド名(型 引数名) {
    // 引数を使った処理
}

ポイントは、カッコ () の中に「型」と「引数名」を書くことです。

前回までは、このカッコの中は空っぽでしたよね。ここに引数を書くわけです。

さっきのあいさつメソッドで見てみましょう:

static void greet(String name) {
    System.out.println("こんにちは、" + name + "さん!");
}
  • String … 引数の型(ここでは文字列を受け取る)
  • name … 引数の名前(自分で自由に付けられる)

この name は、メソッドの中で 変数のように使えるんです。
変数なので名前も自由に決めることができます!!

値を渡して呼び出す

呼び出すときは、カッコの中に渡したい値を入れます:

greet("田中");

この「田中」が name に入って、メソッドの中で使われます。

static void greet(String name) {
    // name に "田中" が入っている
    System.out.println("こんにちは、" + name + "さん!");
}

実行結果:

こんにちは、田中さん!

数字の引数も渡せる

引数は文字列だけでなく、数字も渡せます。

static void showSquare(int number) {
    System.out.println(number + "の2乗は " + (number * number));
}

呼び出すと:

public class Main {
    static void showSquare(int number) {
        System.out.println(number + "の2乗は " + (number * number));
    }

    public static void main(String[] args) {
        showSquare(3);
        showSquare(5);
        showSquare(10);
    }
}

実行結果:

3の2乗は 9
5の2乗は 25
10の2乗は 100

渡す数字を変えるだけで、いろんな計算ができますね!

数字を受け取るときは、引数の型を int にするのがポイントです。

呼び出す側が「渡す値」を準備して、
定義する側が「受け取る変数(引数)」を準備するイメージです。

引数の型に注意

引数には「型」があるので、合った型の値を渡す必要があります。

static void greet(String name) {  // String型を受け取る
    System.out.println("こんにちは、" + name + "さん!");
}

greet("田中");  // OK(文字列を渡している)
greet(123);     // エラー!(数字を渡している)

String型の引数には文字列を、int型の引数には数字を渡しましょう。

このあたりは、変数の型と同じ考え方です。前に学んだ変数の知識が、ここで活きてきますね!

それでは次は、メソッドから結果を「返してもらう」方法を見ていきましょう。

戻り値って何? なぜ必要?

戻り値がないと、こんなに不便!

ここまでのメソッドは、結果を その場で表示するだけ でした。

static void showSquare(int number) {
    System.out.println(number + "の2乗は " + (number * number));
}

でも、こう思ったことはありませんか?

「計算した結果を、表示するんじゃなくて、後で使いたい

例えば、2乗した結果を使って、さらに別の計算をしたい場合。今のメソッドだと、結果が表示されるだけで、その値を取り出して使うことができません。

戻り値を使えば、結果を受け取れる!

そこで登場するのが 戻り値(もどりち) です!

戻り値を使うと、メソッドの 計算結果を呼び出し元に返すことができます。

static int square(int number) {
    return number * number;  // 計算結果を返す
}

そして、呼び出すときに結果を受け取れます:

int result = square(5);  // resultに 25 が入る
System.out.println(result);

実行結果:

25

メソッドが返してきた 25 が、result という変数に入っているんです。

これで、結果を後から自由に使えますね!

戻り値とは

戻り値は、メソッドが返してくる「結果」です。

さっきの料理の例えで言うと:

  • 「ジュースを作るメソッド」に「りんご」を渡す(引数)
  • → 「りんごジュース」が出てくる(戻り値)

引数が「入れるもの(材料)」、戻り値が「出てくるもの(製品)」というイメージです。

メソッドに値を渡して(引数)、結果を受け取る(戻り値)。この2つが揃うと、メソッドが一気に実用的になるんです!

それでは、戻り値の書き方を詳しく見ていきましょう。

戻り値の基本 – return の使い方

戻り値の書き方

戻り値があるメソッドは、こう書きます:

static 戻り値の型 メソッド名(引数) {
    return 返す値;
}

これまでと違うところが2つあります。

  1. void だった部分が「戻り値の型」になる
  2. return で値を返す

順番に見ていきましょう。

void が「戻り値の型」に変わる

前回学んだ void は「値を返さない」という意味でしたよね。

static void greet() {  // 何も返さない
    System.out.println("こんにちは!");
}

戻り値があるメソッドでは、この void の部分が 「返す値の型」 に変わります。

static int square(int number) {  // int型の値を返す
    return number * number;
}

整数 を返すなら int文字列 を返すなら String と書きます。

「このメソッドは、こういう型の値を返しますよ」という宣言ですね。

return で値を返す

return は、「この値を返します」 という命令です。

static int square(int number) {
    return number * number;  // この値を呼び出し元に返す
}

return の後ろに書いた値が、メソッドの結果として返されます。

そして、もう2つ大事なポイントがあります。

1つ目は return で返せる値は1つだけ ということ

static int square(int number) {
    return number * number;  // 返せるのは、この1つの結果だけ
}

2つ目はreturn が実行されると、メソッドはそこで終了します。

static int square(int number) {
    return number * number;
    System.out.println("この行は実行されません");  // returnの後なので動かない
}

return の後の処理は実行されないので、注意してくださいね。

実際に動かしてみよう

戻り値を使ったプログラムを、まるごと見てみましょう。

public class Main {
    // 2乗を計算して返すメソッド
    static int square(int number) {
        return number * number;
    }

    public static void main(String[] args) {
        int result = square(4);
        System.out.println("4の2乗は " + result);
    }
}

実行結果:

4の2乗は 16

ポイント

  • square(4) を呼び出すと、16 が返ってくる
  • その 16result に入る
  • result は普通の変数なので、後から自由に使える

戻り値はそのまま使うこともできる

戻り値は、変数に入れずに そのまま使うこともできます。

public class Main {
    static int square(int number) {
        return number * number;
    }

    public static void main(String[] args) {
        // 変数に入れず、直接表示
        System.out.println("4の2乗は " + square(4));
    }
}

実行結果:

4の2乗は 16

square(4) の部分が 16 に置き換わるイメージです。

書き方は好みですが、結果を何度も使う場合は変数に入れておくと便利ですよ!

それでは次は、引数と戻り値を組み合わせた実践的なメソッドを作ってみましょう

引数 + 戻り値を組み合わせてみよう

ここまでで、引数と戻り値の基本を学びました。

この2つを組み合わせると、本当に実用的なメソッドが作れるようになります!

そして実は、前回チラ見せしたあのコードも、ここで完成します。

int result = add(3, 5);  // resultに 8 が入る

このメソッドを、自分で作れるようになりましょう!

引数を2つ受け取るメソッド

引数は、カンマ , で区切れば複数渡せます

足し算をするメソッドを作ってみましょう:

static int add(int a, int b) {
    return a + b;
}
  • 引数を2つ受け取る(int aint b)
  • その合計を return で返す

呼び出すと:

public class Main {
    static int add(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        int result = add(3, 5);
        System.out.println("合計: " + result);
    }
}

実行結果:

合計: 8

ついに、あのコードの正体がわかりましたね!

add(3, 5) は「3と5を渡して、その合計(8)を返してもらう」メソッドだったんです。

いろんなメソッドを作ってみよう

引数と戻り値があれば、いろんな便利なメソッドが作れます。

例1: 2つの数の大きい方を返す

static int max(int a, int b) {
    if (a > b) {
        return a;
    } else {
        return b;
    }
}

呼び出すと:

System.out.println(max(10, 7));  // 10

if文と組み合わせることで、条件に応じた値を返せます。

ここでも、前に学んだ if文が活きていますね!

例2: あいさつ文を作って返す

戻り値は数字だけでなく、文字列も返せます。

static String makeGreeting(String name) {
    return "こんにちは、" + name + "さん!";
}

呼び出すと:

String message = makeGreeting("田中");
System.out.println(message);

実行結果:

こんにちは、田中さん!

第2章では「表示するだけ」だったあいさつメソッドが、今度は「あいさつ文を作って返す」メソッドになりました。返してもらった文は、表示してもいいし、別の場所で使ってもいい。グッと自由度が上がりましたね!

練習問題: 自分で作ってみよう!

ここで、自分でもメソッドを作ってみましょう!

問題1: 2つの数を引き算するメソッドを作る
ヒント: add を参考に、+- に変えてみましょう

問題2: 2つの数の平均を返すメソッドを作る
ヒント: (a + b) / 2 で平均が計算できます

うまくいかなくても大丈夫です。
最初から何でもかんでもうまく行かないので焦らずゆっくりいきましょう!!

よくあるエラーと注意点

引数と戻り値を使い始めると、必ずエラーに遭遇します。

これは誰でも通る道なので、焦らなくて大丈夫です!

ここでは、よくあるエラーと解決方法を紹介します。つまずいた時に、ここを見返してくださいね。

エラー1: 戻り値の型と return の値が合っていない

症状:

error: incompatible types

「型が合わないよ」というエラーです。

原因:

static int add(int a, int b) {  // int を返すと宣言している
    return "合計です";          // なのに文字列を返している!
}

int を返すと宣言したのに、文字列を返そうとするとエラーになります。

解決方法:

宣言した型と、return で返す値の型を 一致させましょう

static int add(int a, int b) {
    return a + b;  // int を返す
}

エラー2: void なのに return で値を返している

症状:

error: incompatible types: unexpected return value

原因:

static void greet() {  // void = 何も返さない
    return "こんにちは";  // なのに値を返そうとしている!
}

void は「何も返さない」という意味なので、値を返そうとするとエラーになります。

解決方法:

値を返したいなら、void を返す値の型に変えましょう。

static String greet() {  // String を返すように変更
    return "こんにちは";
}

エラー3: return を書き忘れる

症状:

error: missing return statement

「return が見当たらないよ」というエラーです。

原因:

static int add(int a, int b) {
    int sum = a + b;
    // return を書き忘れている!
}

戻り値があるメソッド(void以外)は、必ず return で値を返す必要があります。

解決方法:

static int add(int a, int b) {
    int sum = a + b;
    return sum;  // 忘れずに返す!
}

エラー4: 引数の数や型が合っていない

症状:

error: method add cannot be applied to given types

原因:

static int add(int a, int b) {  // 引数を2つ受け取る
    return a + b;
}

add(3);        // エラー!(引数が1つしかない)
add(3, 5, 7);  // エラー!(引数が多すぎる)

メソッドが受け取る引数の に合わせて、値を渡す必要があります。

解決方法:

add(3, 5);  // 引数を2つ、正しく渡す

定義した引数の数・型と、呼び出すときの値をぴったり合わせましょう。

つまずいた時は

エラーが出た時、焦らず以下を確認してください:

  1. 戻り値の型と return の値は合っているか? → int なら int を返す
  2. void なのに return で値を返していないか?
  3. return を書き忘れていないか? → void 以外は必ず return
  4. 引数の数・型は合っているか? → 定義と呼び出しを一致させる

エラーは、成長のチャンスです!

引数と戻り値は最初ちょっとややこしく感じますが、書いていくうちに必ず慣れます。焦らずいきましょう!

次に学ぶべきこと

長い間、お疲れ様でした!

今日は、メソッドの引数と戻り値を学びましたね。

今日学んだこと

  • 引数(メソッドに値を渡す仕組み)
  • 戻り値(メソッドから結果を受け取る仕組み)
  • return の使い方
  • 引数と戻り値を組み合わせた実践的なメソッド
  • よくあるエラーと解決方法

前回チラ見せした add(3, 5) も、自分で作れるようになりました!

これから何をすべきか

これからは、たくさん書いて動かすことが一番の勉強です!

自分でいろんなメソッドを作って、引数や戻り値を試してみてください。

メソッドが書けるようになると開発の楽さが段違いに変わります!

これまで学んだこと

ここまでのJava入門シリーズで学んだことを整理すると:

変数 + if文 + 繰り返し + 配列 + メソッド(引数・戻り値)

メソッドに引数と戻り値が加わったことで、「値を渡して、結果を受け取る」という、プログラムの基本的なやり取りができるようになりました。

これは、これから先どんなプログラムを書くときにも必ず使う、とても大事な考え方です。

ここまで本当によく頑張りましたね!

次のステップ

メソッドの基本と、引数・戻り値まで学べたので、メソッドはひと通りマスターできました!

次回からは、また新しいテーマに進んでいきます。これまで学んだ「変数・if文・繰り返し・配列・メソッド」を土台に、もう一歩進んだ内容に挑戦していきましょう。

焦らず、一緒に頑張りましょう!

まとめ

お疲れ様でした!今日学んだことを振り返ってみましょう。

今日のポイント

✅ 引数は、メソッドに渡す「材料」(値を渡せる)
✅ 戻り値は、メソッドが返す「結果」(return で返す)
✅ 戻り値があるメソッドは、void の部分を「返す型」にする
✅ 引数は、カンマ , で区切れば複数渡せる
✅ return を実行すると、メソッドはそこで終了する

いきなりたくさんのことをやってごちゃごちゃになりやすいので立ち止まっても全然OKです!
またふわふわとしている感覚はみんなありますので焦らずゆっくり勉強していきましょう!

前回・関連記事

質問や感想をお待ちしています!

この記事でわからなかったことや、つまずいたポイントがあれば、お気軽にコメント欄やお問い合わせフォームからご連絡ください!

また、「引数と戻り値がわかりました!」の報告も大歓迎です。一緒に喜びたいです!

それでは、次の記事でお会いしましょう!