ここから本文です

先ほどのgetNameメソッドのreturn文について 最初はnameで表示がはがねの剣とかえ...

kin********さん

2019/4/1916:37:48

先ほどのgetNameメソッドのreturn文について
最初はnameで表示がはがねの剣とかえってきたのですがここでのnameはミナトだと思いなおしてまたわからなくなりました。

いろいろ試したので試したことを書きます。
Sword s = new Sword("はがね","a");

nameの部分をaにした→装備:はがねの剣
kをフィールドにいれたうえでpublic Sword(String name,String k ) →装備:はがねの剣
kをフィールドにいれたうえでpublic Sword(String k,String name )→装備:a
この処理の仕組みを教えてください

閲覧数:
50
回答数:
2
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

さん

編集あり2019/4/1917:01:59

引数の順番の問題じゃないですか?それは。

確かこういう実装でしたよね。
public Sword(String name,String k ) {
this.name = name;
this.k = k;
}


これに対してコンストラクタを呼んだら1個目の文字列はnameに2個目の文字列はkに保持されます。
Sword s = new Sword("はがね","a");
System.out.println(s.name); //"はがね"
System.out.println(s.k); //"a"


逆にしたら1番目がkになり、2番目がnameになる。
public Sword(String k,String name ){
this.name = name;
this.k = k;
}

Sword s = new Sword("はがね","a");
System.out.println(s.name); //"a"
System.out.println(s.k); //"はがね"

まあ見ての通りだと思いますが…

一つ、これからこのような混乱をしない方法を伝授します。
その方法を覚えると以下のメリットがあります。
・そもそも知恵袋で質問するはめがなくなる
・質問するはめがなくなることで時間の無駄もなくなる
・効率的にプログラムの動きを理解できる

で、プログラミングが出来る人は100%習得しています。
それはデバッグです。

Eclipseではその機能が使えます。
今回あなたに覚えてほしい機能は「ブレークポイント」と「ステップ実行」、「変数のウォッチ」です。

全て端的に言うと
・ブレークポイント
「処理を一時的に止めたい行を指定して処理を止められる機能」

・ステップ実行
「ブレークポイントで止めた行から、ボタン(F11)を押して1行ずつ処理を実行することができる機能」

・変数のウォッチ
「ブレークポイントで止まっている行に対して、変数の状態を見れる機能」(とりあえず、変数の中身の値が見れます)

です。

Eclipseを使う理由はこれが4割ぐらいだと思って過不足ありません。
使ってください。

使い方は調べてもたくさんでてきます。
https://ittoybox.com/archives/341
https://qiita.com/daikete/items/fb70e6e5808b433b9d85
https://itsakura.com/eclipse-debug

これで値の中身が見れるようになったら、
>この処理の仕組みを教えてください
という疑問はなくなります。

リアルタイムにh1やsの箱の中身が見れるんですから。

  • さん

    2019/4/1917:04:54

    意図しない動きや、エラーが出たら全部デバッグしてください。
    気になった機能や知らない機能は全部デバッグが解決してくれますよ。

    もしリアルタイムに値の状態を見て腑に落ちない点があれば、そのときにまた質問すると良いです。

  • その他の返信(5件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2019/4/21 10:43:04

ありがとう、あなたのおかげで処理の理解だけでなく自分自信の成長につなげることもできました。すごく感謝してます

ベストアンサー以外の回答

1〜1件/1件中

hyp********さん

2019/4/2011:07:01

>最初のnameで表示がはがねの剣とかえってのですがここでのnameはミナトだと思い

Swordクラスのnameへは装備する名前を入れたいのでは無いのですか?
ミナトはHeroクラスのnameへ入れたいのだとちょっと思ったのですが。
Heroクラスにnameがあると予想されますが。
Heroクラスに名前と装備クラスの実体を作り名前や装備品を表示したいのだと。
それともミナトは装備品の名前またはそもそもそういう事では無いなら勘違いですのでスルーしてください。通りすがりでちょっと気になっただけですので。

Hero h1 = new Hero("ミナト");
Sword s = new Sword("はがねの剣", "a"); //kというのが何か分かりませんが

System.out.println(h1.getHeroName()); //ゲッターは仮にgetHeroName()
System.out.println(h1.getSword().getName());

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる