これ何て呼びますか

プログラム初心者です。
以下のプログラムで、Heroに剣を所持させたいのですが、エラーが出てしまいます。
どのようにすればよいか解決方法を教えてください。
よろしくお願いします!

class Main------------------------------------------------------------
package samplegame;

public class Main {
public static void main(String[] args) {
Hero h = new Hero();
h.setName("勇者");
h.setHp(100);
Sword s = new Sword();
s.setName("剣");
s.setDamage(10);
h.setSword(s.getName());

System.out.println(h.getName() + "のHPは" + h.getHp());
System.out.println(h.getName() + "の今の武器は" + s.getName());
h.attack();
}

}
-------------------------------------------------------------------------------
Hero class-------------------------------------------------------------------
ackage samplegame;

public class Hero {
private int hp;
private String name;
private Sword sword;


public String getName() {
return this.name;
}

public void setName(String name) {
this.name = name;
}

public Sword getSword() {
return this.sword;
}

public void setSword(Sword sword) {
this.sword = sword;
}

public int getHp() {
return this.hp;
}

public void setHp(int hp) {
this.hp = hp;
}

public void attack(){
System.out.print(this.name + "は" + this.getSword() + "を振るった");
}
}
------------------------------------------------------------------------------------
Sword class-----------------------------------------------------------------------
package samplegame;

public class Sword {
private int damage;
private String name;

public String getName(){
return this.name =name;
}

public void setName(String name) {
this.name = name;
}

public int getDamage(){
return this.damage =damage;
}

public void setDamage(int damage) {
this.damage = damage;
}

}
-----------------------------------------------------------------------------------

A 回答 (2件)

>No.1 回答者: amanojaku6



>h.setSword(s.getName());

↑とりあえず

h.setSword(s);

↑このように修正すればコンパイル・エラーは消えますが、実行上・問題が発生するようです。



「class Hero」の「attack()」内の修正が必要です

>System.out.print(this.name + "は" + this.getSword() + "を振るった");

↑下記のように修正して下さい。

System.out.print(this.name + "は" + this.getSword().getName() + "を振るった");
    • good
    • 0
この回答へのお礼

ありがとうございます、無事解決しました。
get~~のあとに再度getをつけて作れるというは知りませんでした。
早急にご回答いただきありがとうございました!

お礼日時:2018/11/21 08:19

>h.setSword(s.getName());



>h.setSword(~)
Hero#setSword(Sword sword)

>s.getName()
Sword#(String)getName()

もう、分かりましたでしょうか?
「h.setSword(~)」の引数の型は「Sword」オブジェクト、「s.getName()」の返り値は「String」オブジェクトという事なので、当然エラーになります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!