eclipseでスッキリわかるJava入門実践編を勉強しています。
以下の3つのコードがlist04-09にあります。Main.javaを実行すると
実行結果は
装備:はがねの剣
clone()で複製します
コピー元の勇者の剣の名前を変えます
コピー元とコピー先の勇者の装備を表示します
コピー元:ひのきの棒/コピー先:ひのきの棒
となるはずですがエラーが出て実行できません。
エラーメッセージは
Exception in thread "main" java.lang.NullPointerException
at sample.list04_09.Main.main(Main.java:10)
です。
実行できるように直してもらえませんか。
list04-09 Main.java public class Main { public static void main(String[] args) { Hero h1 = new Hero("ミナト"); Sword s = new Sword("はがねの剣"); System.out.println("装備:" + h1.getSword().getName()); System.out.println("clone()で複製します"); Hero h2 = h1.clone(); /* ここで複製 */ System.out.println("コピー元の勇者の剣の名前を変えます"); h1.getSword().setName("ひのきの棒"); System.out.println("コピー元とコピー先の勇者の装備を表示します"); System.out.println("コピー元:" + h1.getSword().getName() + "/コピー先:" + h2.getSword().getName()); } }
list04-09 Hero.java public class Hero implements Cloneable { String name; // 名前 int hp; // HP Sword sword; // 装備している武器 public Hero clone() { Hero result = new Hero(name); result.name = this.name; result.hp = this.hp; result.sword = this.sword; return result; } public Hero(String name) { this.name = name; } public Sword getSword() { return sword; } public void setSword(Sword sword) { this.sword = sword; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
list04-09 Sword.java public class Sword { private String name; public Sword(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/07/26 02:24
退会済みユーザー
2018/07/26 02:26