質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

788閲覧

106,107行目で、モンスター0、モンスター1のpowerを整数で表示させたい

eak_a

総合スコア2

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2021/11/09 15:09

前提・実現したいこと

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型に変換しようとしたがわからなかった。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2021/11/09 16:41

POWER よりも attackMode を enum 化すべきでは (^^;
guest

回答2

0

ベストアンサー

mon0.power.powerValue を表示ってはなしなんでは

投稿2021/11/09 15:27

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

eak_a

2021/11/09 16:18

インスタンス.クラス.フィールド ってことですかね?
y_waiwai

2021/11/09 22:50

まあそゆことですね power だとpowerクラスのインスタンスになります #tostringメソッドを実装するという手も
guest

0

java

1package teratail_java.q368546; 2 3class Power{ 4 //パワーの最小値、最大値、デフォルト値[馬力] 5 final static int MIN = 0; 6 final static int MAX = 1000; 7 final static int DEFAULT = 100; 8 int value; //パワー 9 10 Power(){ 11 this(DEFAULT); 12 } 13 14 Power(int value) { 15 if(value < MIN || MAX < value) { 16 throw new IllegalArgumentException("value"); 17 } 18 this.value = value; 19 } 20} 21 22//(パワーの)消費モード 23enum ConsumptionMode { 24 MostSaving("Most Saving", 1/4), 25 Saving("Saving", 1/2), 26 Normal("Normal", 1), 27 Powerful("Powerful", 2), 28 MostPowerful("Most Powerful", 4); 29 30 static ConsumptionMode getDefault() { 31 return Normal; 32 } 33 34 private String text; //表示用文字列 35 private double correctionValue; //補正値 36 ConsumptionMode(String text, double correctionValue) { 37 this.text = text; 38 this.correctionValue = correctionValue; 39 } 40 int correct(int value) { 41 return (int)(value * correctionValue); 42 } 43 @Override 44 public String toString() { 45 return text; 46 } 47} 48 49class Monster{ 50 //持っているパワー 51 Power power; 52 53 //1回で発揮できるパワーの最小値、最大値。デフォルト値[馬力/回] 54 final static int MIN_POWERRATE = 5; 55 final static int MAX_POWERRATE = 100; 56 final static int DEFALT_POWERRATE = 10; 57 int powerRate; 58 59 //パワーの消費モード 60 ConsumptionMode attackMode; //攻撃する時のパワーの消費モード 61 ConsumptionMode beAttackedMode; //攻撃される時のパワーの消費モード 62 63 Monster(){ 64 this(new Power(),DEFALT_POWERRATE,ConsumptionMode.getDefault(),ConsumptionMode.getDefault()); 65 } 66 67 Monster(Power power,int powerRate,ConsumptionMode attackMode,ConsumptionMode beAttackedMode) { 68 this.power = power; 69 if(powerRate < MIN_POWERRATE || MAX_POWERRATE < powerRate) { 70 throw new IllegalArgumentException("powerRate"); 71 } 72 this.powerRate = powerRate; 73 this.attackMode = attackMode; 74 this.beAttackedMode = beAttackedMode; 75 } 76 //攻撃してパワーを消費する 77 void attack() { 78 power.value -= attackMode.correct(powerRate); 79 } 80 //攻撃を受けてパワーを消費する 81 void beAttacked() { 82 power.value -= beAttackedMode.correct(powerRate); 83 } 84} 85 86public class MonsterBattleTest { 87 public static void main(String[] args){ 88 System.out.println("************バトル前************"); 89 90 try { 91 Monster mon0 = new Monster(); 92 Monster mon1 = new Monster(new Power(195), 20, ConsumptionMode.MostPowerful, ConsumptionMode.Powerful); 93 System.out.println("\t■モンスター0のパワー残量:" + mon0.power.value); 94 System.out.println("\t■モンスター0のパワー消費モード:" + mon0.attackMode); 95 System.out.println("\t□モンスター1のパワー残量:" + mon1.power.value); 96 System.out.println("\t□モンスター1のパワー消費モード:" + mon1.attackMode); 97 }catch(Exception e) { 98 System.out.println("モンスターのパワーの数値が不適切です。"); 99 } 100 } 101}

投稿2021/11/09 17:38

jimbe

総合スコア13209

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問