• 締切済み

引数と戻り値がわかりません

Javaを勉強中なのですが、引数と戻り値がよく分かりません。 自分で買ったテキストをベースに進めているのですが、ここで詰まってしまいます。 具体的に表現するのが難しいのですが、値がどこに行ってどういう流れになっているのかが 自分で追えず混乱してます。 public static method X (String name){ return name; ↑こういう記述です。 「値をとってくる」、「呼び出し元へ値を返す」という事が分かってないのだと思います。 まだまだ知識が覚束ないのでわかりにくいかもしれませんが、 ご教授願います。

みんなの回答

  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.2

メソッド一個だけ見ていても、呼び元、戻り先のことは理解しにくいでしょう。 メソッド側で「値をとってくる」、「呼び出し元へ値を返す」のではなく、 呼び元で、「値を渡す」「結果を貰う」 のです。 まず、先に一連の流れが有って、そのうちでよく繰り返す作業とか込み入った部分を一つのサブルーチン(部分作業)として関数(javaではメソッド)に取り出して、メインの流れを見やすくするのが、最初の理解かと思う。 で、一番最初のエントリーポイントである以下のmainメソッドに全体の流れが記述される public static void main(String[] args) { // 初期値 int x = 5; // 作業 int y = x * x; // 出力 System.out.println("y= f("+x + ") ="+y); } // x * x を メソッドfxとして定義すると public static int fx( int a ){ return a*a; } // 先ほどのmain メソッドの中身はこうなる public static void main(String[] args) { int x = 5; int y = fx(x); /* メソッドfx に x の値を渡して、 メソッドで作業した結果をy 変数に貰う */ System.out.println("y= f("+x + ") ="+y); } 上記は、fx メソッドの中身が単純すぎてありがたみがないが、もっと複雑な演算をさせたり、引数も返値もインスタンス型にもできるので、さらに複雑な処理がmainメソッドからは見えないところで行われて、最終結果だけ、main メソッドで受け取ることで、mainメソッドの中をすっきりさせられる。

全文を見る
すると、全ての回答が全文表示されます。
  • Kaneyan-R
  • ベストアンサー率42% (1258/2927)
回答No.1

掲示されている例で言えば、()内にある「name」が引数を格納する文字列変数、returnで返す「name」が戻り値の内容(文字列)になります。 つまり、厳密に言えばこの中に「引数」と「戻り値」はありません。 引数は、関数やサブルーチンに「渡す値」のこと。 戻り値は、関数やサブルーチンの処理によって「返されてきた値」のことです。 JAVAに明るくないのでJavaScriptで説明。 function test(S){ return S+1; } var A = test(4); //←関数「test()」に引数「4」を渡した結果(戻り値)をAに代入。 alert(A); //←Aの値を表示。 この例だと、関数「test()」で受け取った値に+1してるので、引数は4、戻り値は5になります。 よってAの値は「5」です。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • JAVA 引数の引数の取得について

    JAVA初心者です。的を得ていない書き込みをするかもしれませんが ご勘弁ください。今JUNITであるクラスのあるメソッド(MethodA)をチェックする テストプログラムを作成しております。 MethodA: public File MethodA(String name, File A) { int i = name.substring(0, i); String ret = name.substring(0, i + 1); return new File(A, ret); この場合に戻り値として返される引数の部分 「return new File(A, ret);」 の「A」と「ret」の値をJUNITで確認したいのですが、アイデアを 頂けますと大変幸いです。 また、戻り値の「return new File(A, ret);」に 「new」とついているのはなぜでしょうか?? 基本的な質問で大変申し訳ございませんが、よろしくお願いします。

    • ベストアンサー
    • Java
  • Java戻り値について

    Javaの戻り値がいまいちよくわかりません。 引数については理解できているのですが、戻り値の「値が戻る?」という表現がよくわからないのです。 もっと言うと、引数との違いがこれまたよくわかりません。 先輩方、お暇な時にでも教えてください。 宜しくお願いします。

    • ベストアンサー
    • Java
  • 実引数リストと仮引数リストの長さが異なります

    実引数と仮引数はあっているはずですが、次のエラーが出ます。どうしてでしょうか? ------エラー----------------------- java: クラス Itemのコンストラクタ Itemは指定された型に適用できません。 期待値: 引数がありません 検出値: java.lang.String,int,java.util.Date 理由: 実引数リストと仮引数リストの長さが異なります -------------------------------------------------- public class Main { public static void main(String[] args) { String name= "test"; int price = 0; Date date = new Date(); Item item = new Item(name,price,date);//コンストラクタ実引数 } } class Item{ String name; int price; Date date; void Item(String name, int price, Date date)//コンストラクタ仮引数 { this.name = name; this.price = price; this.date = date; } }

    • ベストアンサー
    • Java
  • クラスを使用した問題

    問題 Mainクラス 1.実行時に引数を付けて実行する。 2.判定クラスのオブジェクトを生成する。 3.args(実行時の引数)から値を取得する。 4.argsから取得した値を引数として、判定クラスのnameメソッドを実行する。 5.argsから取得した値を引数として、判定クラスのageメソッドを実行する。 6.argsから取得した値を引数として、判定クラスのbirthメソッドを実行する。 判定クラス nameメソッド(引数=String) 1.String型の引数を一つ受け取る 2.受け取った引数の値が「name」だった場合、名前を表示する。 戻り値なし。 ageメソッド(引数=String) 1.String型の引数を一つ受け取る 2.受け取った引数の値が「age」だった場合、名前を表示する。 戻り値なし。 birthdayメソッド(引数=String) 1.String型の引数を一つ受け取る 2.受け取った引数の値が「birthday」だった場合、名前を表示する。 戻り値なし。 実行結果 java NameAgeBirth name 岩田 java NameAgeBirth age 27歳 java NameAgeBirth birthday 5月16日 参考例が欲しいです。良かったら参考例をください。よろしくお願いします。

  • AS3の戻り値

    AS3の戻り値の使い方が理解できないので教えて下さい。 戻り値が引数の結果を戻すというのはこのサイトで分かりました。 理解できないのは以下です。 1.voidとreturnの違い。 2.戻った値の使い所。 特に2番ですがこのサイトの説明では戻り値の色々な答えの例で、引数「牛乳」が戻り値「イチゴ」に変わるという感じの例が結構ありますがそれでどうなるのか、どうなるのかが知りたいです。

    • ベストアンサー
    • Flash
  • 引数について質問

    私プログラミング初心者ですので、できるだけ優しい解説をしていただければ幸いです! 引数について、以下のような解説がありました。 「引数には仮引数と実引数の2種類が存在する。仮引数は、関数を定義する際に変数で指定する引数である。また、実引数は、プログラムの実行時に関数に引き渡される値となる引数である。つまり、関数の実行時には、実引数の値が仮引数に代入されることになる。」 質問:1「関数を定義する際に変数で指定する引数である。」という記述の中で「関数を定義」とありますが、実際のソースコードにおいて何に対応するかわかりません。簡潔なソースコードを交えて解説していただければ幸いです。 質問2:「関数を定義」に限らず、プログラミングにおいて「定義」という言葉をよく見ますが、これは本質的にどういう意味をもっているのでしょうか?具体的なソースコースコードを交えて解説してくださると幸いです。 もしかして、その定義とは例えば「public static void main(String arg[]){」のような「メソッド宣言」のことですか? 質問3:「関数の実行時には、実引数の値が仮引数に代入されることになる。」と書いてありますが、 これはどういうことですか、僕が実際にソースコードで記述してみるので、その考えが正しいか判定してください package 第4章; public class A { public static void main(String arg[]){ double x; x=Math.sqrt(2.0); System.out.println("2.0の平方根は"+x); } } 僕の考え:String arg[]が仮引数で、実引数2.0がString arg[]に代入されるってことでしょうか? 「定義」といえば、上記のソースコードでは、public static void main(String arg[]){ 以外見当たらないので、、 僕の考え2:Mathクラスは、標準クラス(javaが最初から備えているクラス)だから、プログラマが「関数を定義」しなくても予め関数が定義されているから、関数を定義する必要がない、ということでしょうか?

    • ベストアンサー
    • Java
  • 戻り値を使う問題について

    <問題> 以下のクラスを作成せよ。 「mainメソッド」 1)Aisatuクラスのオブジェクト作成。 2)Aisatuクラスのohayouメソッドを呼び出し、  戻り値を取得して表示する。 3)Aisatuクラスのkonnitiwaメソッドを呼び出し、  戻り値を取得して表示する。 4)Aisatuクラスのkonbanwaメソッドを呼び出し、  戻り値を取得して表示する。 「Aisatuメソッド」 ohayouメソッド ・「おはようございます」という文字列を戻り値とする。 ・「こんにちは」という文字列を戻り値とする。 ・「こんばんは」という文字列を戻り値とする。 <実行結果> おはようございます こんにちは こんばんは ************************************************************ 上記の質問についてのプログラムなんですが、いまいちクラスとか メソッドとかよく分からなくて、ちゃんと実行できません。 コンパイルは通るのですが、実行しようとすると、 java.lang.NoSuchMethodError のエラーが出てしまいます。 メソッドが見つからないということでしょうか? 間違っているところを教えて下さい。 よろしくお願いします。 class Aisatu { private String oha; private String koni; private String koba; public String aiOhayou(String o) { oha = o; return oha; } public String aiKonnitiwa(String n) { koni = n; return koni; } public String aiKonbanwa(String b) { koba = b; return koba; } } class Greet02 { public static void main(String args[]) { Aisatu as = new Aisatu(); as.aiOhayou("おはようございます"); String ohayou = as.aiOhayou("おはようございます"); System.out.println(ohayou); as.aiKonnitiwa("こんにちは"); String konnitiwa = as.aiKonnitiwa("こんにちは"); System.out.println(konnitiwa); as.aiKonbanwa("こんばんは"); String konbanwa = as.aiKonbanwa("こんばんは"); System.out.println(konbanwa); } }

    • ベストアンサー
    • Java
  • accessの戻り値について

    フォーム上で計算した値を比較してあってるかあってないかを判定し、「正」or「違」と表示させたいと思っています あるテキストボックスに =iff(StrComp([テキストボックス1],[テキストボックス2])=0,"正","違") この式を入れたのですが、name?になってしまいうまく動きません 戻り値ではIF文は成り立たないのでしょうか? ちなみにstrcompのだけにすると戻り値として0(テキストボックス1=テキストボックス2)という値は出ています よろしくお願いします

  • コマンドライン引数はどこからやって来たのですか?

    こんにちは Javaで、 public static void main(String args[]) という引数は、どこからやって来たのでしょうか? これがコマンドラインに初めて書かれる文だとしたら、どこから引数を貰うのでしょうか? また、2番目に書いたクラスだったとしても、他のクラスのなかのものをそんな簡単に貰うことはできるのでしょうか? もし宜しければ回答お願い致します。

    • ベストアンサー
    • Java
  • 戻り値を配列で受け取りたいのですが...

    とても初歩的な質問をしてしまっていたらごめんなさい。 戻り値を配列で受け取りたいのですが、上手く出来ず困っています。 ヒント・アドバイス等いただけないでしょうか? このようなプログラム(一部省略)を作成したところ、無事に動作確認ができました。  public String test(){    String a = null;    while(rs.next()){      a = rs.getString("b");    }   return a;  }  //受け取り側  String a = test(); ですが、aを複数取得したいと思い、プログラムを下記のように変更するとエラーが出てしまうのです。  public String[] test(){    String[] a = null;    while(rs.next()){      a = rs.getString("b");    }   return a;  }  //受け取り側  String[] a = test(); このように変更すると、 a = rs.getString("b");の部分と String[] a = test();の部分で java.lang.NullPointerExceptionというエラーが出て動きません。 NullPointerExceptionということは、aに値がないと言われているのかな? とも思ったのですが、aには必ず値が入っています。 このような配列のやり取りはできないのでしょうか? もしくは、書き方がおかしいのでしょうか?

    • ベストアンサー
    • Java