前提・実現したいこと
106,107行目で、モンスター0、モンスター1のpowerを整数で表示させたい
発生している問題・エラーメッセージ
************バトル前************ ■モンスター0のパワー残量:Power@41a4555e □モンスター1のパワー残量:Power@3830f1c0
該当のソースコード
Java
1/*Power class===================================================================*/ 2class Power{ 3 //パワーの最小値、最大値、デフォルト値[馬力] 4 final static int MIN_POWER = 0; 5 final static int MAX_POWER = 1000; 6 final static int DEFAULT_POWER = 100; 7 int powerValue; //パワー 8 9 //コンストラクタ(デフォルトに設定) 10 Power(){ 11 powerValue = DEFAULT_POWER; 12 } 13 //コンストラクタ(指定した値に設定) 14 Power(int powerValue)throws Exception{ 15 if(powerValue < MIN_POWER || MAX_POWER < powerValue) { 16 throw new Exception(); 17 } 18 this.powerValue = powerValue; 19 } 20} 21/*Monster class=================================================================*/ 22class Monster{ 23 //持っているパワー 24 Power power; 25 26 //1回で発揮できるパワーの最小値、最大値。デフォルト値[馬力/回] 27 final static int MIN_POWERRATE = 5; 28 final static int MAX_POWERRATE = 100; 29 final static int DEFALT_POWERRATE = 10; 30 int powerRate; 31 32 //パワーの消費モード、デフォルト値 33 final static String[] MODE = {"Most Saving","Saving","Normal","Powerful","Most Powerful"}; 34 final static String DEFALT_MODE = "Normal"; 35 String attackMode; //攻撃する時のパワーの消費モード 36 String beAttackedMode; //攻撃される時のパワーの消費モード 37 38 //コンストラクタ(デフォルト設定) 39 Monster(){ 40 power = new Power(); 41 powerRate = DEFALT_POWERRATE; 42 attackMode = DEFALT_MODE; 43 beAttackedMode = DEFALT_MODE; 44 } 45 //コンストラクタ(指定した値に設定) 46 Monster(int powerValue,int powerRate,String attackMode,String beAttackedMode) 47 throws Exception{ 48 this.power = new Power(powerValue); 49 if(powerRate < MIN_POWERRATE || MAX_POWERRATE < powerRate) { 50 throw new Exception(); 51 } 52 if(attackMode != MODE[0] && attackMode != MODE[1] && 53 attackMode != MODE[2] && attackMode != MODE[3] && 54 attackMode != MODE[4]) { 55 throw new Exception(); 56 } 57 if(beAttackedMode != MODE[0] && beAttackedMode != MODE[1] && 58 beAttackedMode != MODE[2] && beAttackedMode != MODE[3] && 59 beAttackedMode != MODE[4]) { 60 throw new Exception(); 61 } 62 this.powerRate = powerRate; 63 this.attackMode = attackMode; 64 this.beAttackedMode = beAttackedMode; 65 } 66 //メソッド(攻撃してパワーを消費する) 67 void attack() { 68 int p = 0; 69 if(attackMode == MODE[0]) { 70 p = (1/4)*powerRate; 71 }else if(attackMode == MODE[1]) { 72 p = (1/2)*powerRate; 73 }else if(attackMode == MODE[2]) { 74 p = powerRate; 75 }else if(attackMode == MODE[3]) { 76 p = 2*powerRate; 77 }else if(attackMode == MODE[4]) { 78 p = 4*powerRate; 79 } 80 power.powerValue -= p; 81 } 82 //メソッド(攻撃を受けてパワーを消費する) 83 void beAttacked() { 84 int p = 0; 85 if(beAttackedMode == MODE[0]) { 86 p = (1/4)*powerRate; 87 }else if(beAttackedMode == MODE[1]) { 88 p = (1/2)*powerRate; 89 }else if(beAttackedMode == MODE[2]) { 90 p = powerRate; 91 }else if(beAttackedMode == MODE[3]) { 92 p = 2*powerRate; 93 }else if(beAttackedMode == MODE[4]) { 94 p = 4*powerRate; 95 } 96 power.powerValue -= p; 97 } 98} 99public class MonsterBattleTest { 100 public static void main(String[] args){ 101 System.out.println("************バトル前************"); 102 103 try { 104 Monster mon0 = new Monster(); 105 Monster mon1 = new Monster(195, 20, "Most Powerful", "Powerful"); 106 System.out.println("\t■モンスター0のパワー残量:" + mon0.power); 107 System.out.println("\t□モンスター1のパワー残量:" + mon1.power); 108 }catch(Exception e) { 109 System.out.println("モンスターのパワーの数値が不適切です。"); 110 } 111 } 112}
試したこと
Power型の変数をどうにかしてint型に変換しようとしたがわからなかった。
POWER よりも attackMode を enum 化すべきでは (^^;
回答2件
あなたの回答
tips
プレビュー