コーディングの練習として某モンスターゲームのようなふるまいをしてくれるコードを書いてみました。しかしよくわからないエラーがでてしまい困っていおります。以下にコード、エラー内容を記します。
java
1import java.math.BigDecimal; 2 3class Monster3{ 4 //------フィールド------ 5 private String character; //種族 6 private String trainer; //トレーナー 7 private String name; //なまえ 8 private int lv; //レベル 9 private int hp; //HP 10 private int atk; //こうげき 11 private int def; //ぼうぎょ 12 private int spd; //すばやさ 13 private int hp_max; //HP初期値 14 private String waza_nm; //わざ(なまえ) 15 private String waza_dmg_rate; //わざ(ダメージ倍率) 16 17 //------コンストラクタ------- 18 //コンストラクタ① 19 Monster3(){ 20 this.character = "(unknown)"; 21 this.trainer = "(wild)"; 22 this.name = "(noname)"; 23 this.lv = 1; 24 this.hp = 30; 25 this.atk = 15; 26 this.def = 10; 27 this.spd = 10; 28 this.hp_max = 30; 29 this.waza_nm = "たいあたり"; 30 this.waza_dmg_rate = "1.0"; 31 } 32 33 //コンストラクタ② 34 Monster3( String tr,String nm ){ 35 this(); 36 this.trainer = tr; 37 this.name = nm; 38 } 39 40 //コンストラクタ③ 41 Monster3( String tr,String nm,int initial_lv ){ 42 this(tr,nm); 43 levelUp(initial_lv - 1); 44 } 45 46 //------メソッド------- 47 //levelUpメソッド 48 public void levelUp( int lv_up ){ 49 if( lv_up == 0){ 50 //処理なし 51 }else if( lv_up > 0 ){ 52 this.lv = lv + lv_up * 1; 53 this.hp_max = hp_max + lv_up * 15; 54 this.atk = atk + lv_up * 5; 55 this.def = def + lv_up * 5; 56 this.spd = spd + lv_up * 5; 57 this.hp = hp_max; 58 } 59 } 60 61 //setWazaメソッド 62 public void setWaza( String wz_nm, String wz_dg_rt ){ 63 String str = wz_dg_rt ; 64 65 if( str.matches("^[0-9]+.[0-9]$")){ 66 this.waza_nm = wz_nm; 67 this.waza_dmg_rate = wz_dg_rt; 68 }else{ 69 System.out.println("[ERROR]わざの設定に失敗しました"); 70 } 71 } 72 73 //getStatusメソッド 74 public String getStatus(){ 75 String resultMessage = "[" + this.name + "lv" + this.lv + "HP" + this.hp + "/" + this.hp_max + "]" ; 76 return resultMessage ; 77 } 78 79 //useWazaメソッド 80 public int useWaza(){ 81 BigDecimal a = BigDecimal.valueOf(this.atk); 82 BigDecimal w = new BigDecimal(this.waza_dmg_rate); 83 BigDecimal give_dmg = (a.multiply(w)).setScale(0,BigDecimal.ROUND_DOWN); 84 85 int result_give_dmg = give_dmg.intValue(); 86 87 return result_give_dmg; 88 } 89 90 //damagedメソッド 91 public int damaged(int gv_dmg){ 92 //ダメージ減算率を求める 93 BigDecimal one = new BigDecimal("1"); 94 BigDecimal hun_twny = new BigDecimal("120"); 95 BigDecimal df = BigDecimal.valueOf(this.def); 96 BigDecimal denom = one.add(df.divide(hun_twny)); 97 BigDecimal given_dmg_rate = one.divide(denom,2,BigDecimal.ROUND_UP); 98 99 //実際に受けるダメージを求める 100 BigDecimal gd = BigDecimal.valueOf(gv_dmg); 101 BigDecimal given_dmg = gd.multiply(given_dmg_rate); 102 int result_given_dmg = given_dmg.intValue(); 103 104 //HPの変化 105 if( this.hp > result_given_dmg ){ 106 this.hp = hp - result_given_dmg; 107 }else{ 108 this.hp = 0; 109 } 110 return result_given_dmg; 111 } 112 113 //-----getter/setter----- 114 //String character 115 public String getCharacter(){ 116 return this.character; 117 } 118 public void setCharacter(){ 119 this.character = character; 120 } 121 122 //String trainer 123 public String getTrainer(){ 124 return this.trainer; 125 } 126 public void setTrainer(){ 127 this.trainer = trainer; 128 } 129 130 //String name 131 public String getName(){ 132 return this.name; 133 } 134 public void setName(){ 135 this.name = name; 136 } 137 138 //int lv 139 public int getLv(){ 140 return this.lv; 141 } 142 public void setLv(){ 143 this.lv = lv; 144 } 145 146 //int hp 147 public int getHp(){ 148 return this.hp; 149 } 150 public void setHp(){ 151 this.hp = hp; 152 } 153 154 //int atk 155 public int getAtk(){ 156 return this.atk; 157 } 158 public void setAtk(){ 159 this.atk = atk; 160 } 161 162 //int def 163 public int getDef(){ 164 return this.def; 165 } 166 public void setDef(){ 167 this.def = def; 168 } 169 170 //int spd 171 public int getSpd(){ 172 return this.spd; 173 } 174 public void setSpd(){ 175 this.spd = spd; 176 } 177 178 //int hp_max 179 public int getHp_max(){ 180 return this.hp_max; 181 } 182 public void setHp_max(){ 183 this.hp_max = hp_max; 184 } 185 186 //String waza_nm 187 public String getWaza_nm(){ 188 return this.waza_nm; 189 } 190 public void setWaza_nm(){ 191 this.waza_nm = waza_nm; 192 } 193 194 //String waza_dmg_rate 195 public String getWaza_dmg_rate(){ 196 return this.waza_dmg_rate; 197 } 198 public void setWaza_dmg_rate(){ 199 this.waza_dmg_rate = waza_dmg_rate; 200 } 201 202} 203
java
1class Fushigiyade extends Monster3{ 2 //-----フィールド----- 3 //なし 4 5 //-----コンストラクタ----- 6 //コンストラクタ① 7 Fushigiyade(){ 8 super(); 9 super.setCharacter("フシギヤデ"); 10 } 11 12 //コンストラクタ② 13 Fushigiyade( String tr,String nm ){ 14 super(tr,nm); 15 super.setCharacter("フシギヤデ"); 16 } 17 18 //コンストラクタ③ 19 Fushigiyade( String tr,String nm,int initial_lv ){ 20 super(tr,nm,initial_lv); 21 super.setCharacter("フシギヤデ"); 22 } 23 24 //-----メソッド----- 25 //levelUpメソッドをオーバーライド 26 public void levelUp( int lv_up ){ 27 if( lv_up == 0 ){ 28 //処理なし 29 }else if( lv_up > 0 ){ 30 super.setLv( super.getLv() + lv_up*1 ); 31 super.setHp_max( super.getHp_max() + lv_up*14 ); 32 super.setAtk( super.getAtk() + lv_up*8 ); 33 super.setDef( super.getDef() + lv_up*5 ); 34 super.setSpd( super.getSpd() + lv_up*9 ); 35 super.setHp( super.getHp_max ); 36 } 37 } 38}
【エラー内容】一部抜粋(※字数制限により)
java
1C:\WorkSpace\Java.Ob\Practice\Test>javac SimulateMonsterBattle.java 2.\Monster3.java:70: error: illegal escape character 3 if( str.matches("^[0-9]+.[0-9]$")){ 4 ^ 5.\Fushigiyade.java:9: error: method setCharacter in class Monster3 cannot be applied to given types; 6 super.setCharacter("フシギヤデ"); 7 ^ 8 required: no arguments 9 found: String 10 reason: actual and formal argument lists differ in length 11.\Hitokake.java:35: error: cannot find symbol 12 super.setHp( super.getHp_max ); 13 ^ 14 symbol: variable getHp_max 1519 errors
このエラーのまず一番先頭の「illegal escape character」とありますが、「.」の部分に山印がついていたのでそこがエラーの原因なのかとおもいますが、「.」を含むプログラムでエラーがでないものが検索するとございましたので、何が間違っているのか分からないです。
また他のほとんどのエラーにある「cannot be applied to given types」の部分も調べても英語ばかりでエラー内容がよくわかりませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/29 04:34