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

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

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

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

Q&A

解決済

3回答

593閲覧

シンボルを見つけられません。とコンパイルエラーがでます。

syunn

総合スコア78

Java

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

0グッド

0クリップ

投稿2019/06/01 21:29

編集2019/06/01 21:54

前提・実現したいこと

シンボルを見つけられません。コンパイルエラーを解決したい。

発生している問題・エラーメッセージ

Actor.java:4: エラー: シンボルを見つけられません int damage = offence - pActor.getDeffence(); ^ シンボル: 変数 offence 場所: クラス Actor Actor.java:4: エラー: シンボルを見つけられません int damage = offence - pActor.getDeffence(); ^ シンボル: メソッド getDeffence() 場所: タイプActorの変数 pActor Actor.java:9: エラー: シンボルを見つけられません pActor.setHitPoint(pActor.getHitPoint() - damage); ^ シンボル: メソッド getHitPoint() 場所: タイプActorの変数 pActor Actor.java:11: エラー: シンボルを見つけられません System.out.println(name + "は" + pActor.getName() + "に" + damage + "のダメージを与えた"); ^ シンボル: 変数 name 場所: クラス Actor Actor.java:11: エラー: シンボルを見つけられません System.out.println(name + "は" + pActor.getName() + "に" + damage + "のダメージを与えた"); ^ シンボル: メソッド getName() 場所: タイプActorの変数 pActor エラー5個

該当のソースコード

java

1public class Actor{ 2 public void attack(Actor pActor){ 3 //ダメージを計算 4 int damage = offence - pActor.getDeffence(); 5 //相手の防御力が自分より高いときは1ダメージ 6 if(damage <= 0){ 7 damage = 1; 8 //相手のHPからダメージ分のHPを減らします 9 pActor.setHitPoint(pActor.getHitPoint() - damage); 10 11 System.out.println(name + "は" + pActor.getName() + "に" + damage + "のダメージを与えた"); 12 } 13 } 14}

java

1public class Hero{ 2 private int hitPoint; 3 private int attack; 4 private int deffence; 5 6 public Hero(int pHitPoint,int pAttack,int pDeffence){ 7 hitPoint = pHitPoint; 8 attack = pAttack; 9 deffence = pDeffence; 10 } 11 public int getHitPoint(){ 12 return hitPoint; 13 } 14 public void setHitPoint(int pHitPoint){ 15 hitPoint = pHitPoint; 16 } 17 18 public int getAttack(){ 19 return attack; 20 } 21 public void setAttack(int pAttack){ 22 attack = pAttack; 23 } 24 25 public int getDeffence(){ 26 return deffence; 27 } 28 public void setDffence(int pDeffence){ 29 deffence = pDeffence; 30 } 31} 32 33 34 35 36 37

java

1public class MyMain{ 2 public static void main(String[] args){ 3 //主人公を作成、HP100、攻撃力20、防御力10 4 Actor hero = new Actor("主人公",100,20,10); 5 6 //敵を作成、HP80、攻撃力25、防御力6 7 Actor enemy = new Actor("敵",80,25,6); 8 9 while(true){ 10 hero.attack(enemy); 11 12 if(enemy.gerHitPoint() <= 0){ 13 14 System.out.println(enemy.getName() + "は死んだ"); 15 break; 16 } 17 enemy.attack(hero); 18 if(hero.getHitPoint() <= 0){ 19 20 System.out.println(enemy.getName() + "は死んだ"); 21 break; 22 } 23 } 24 } 25}

試したこと

解答と一字一句照らし合わせました

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

m.ts10806

2019/06/01 21:32

タイトルだけ見たときに要件が伝わりません。同じタイトルばかりだとあとから見返すときに困りませんか? 他の人は困ると思います。 「タイトルには要件を書きましょう」と「質問するときのヒント」にあるので、そこは倣ってもらえたらと。
syunn

2019/06/01 21:39

ご指摘ありがとうございます。訂正しました。
m.ts10806

2019/06/01 21:51

コードはこれで全てですか?mainメソッドがないのにどうやって実行しているのでしょう? エラー原因だけなら明白ですが的確な回答するのであれば再現確認する必要があります。
syunn

2019/06/01 21:52

ご指摘ありがとうございます。実行クラスを追加しました。
KoichiSugiyama

2019/06/01 22:55

>試したこと >解答と一字一句照らし合わせました とありますが、これでソースがすべてなのであれば、解答が間違っているとしか言えません。mts10806さんがご指摘されているように、原因は明白です。
guest

回答3

0

回答ではありませんが、簡易版? を作ってみたので参考までに。

java

1public class MyMain{ 2 public static void main(String[] args){ 3 String hero_name = "主人公"; 4 int hero_hitpoint = 100; 5 int hero_attack = 20; 6 int hero_deffence = 10; 7 8 String enemy_name = "敵"; 9 int enemy_hitpoint = 80; 10 int enemy_attack = 25; 11 int enemy_deffence = 6; 12 13 int damage; 14 15 while(true){ 16 damage = hero_attack - enemy_deffence; 17 if (damage > 0) { 18 enemy_hitpoint = enemy_hitpoint - damage; 19 System.out.println(hero_name + "は" + enemy_name + "に" + damage + "のダメージを与えた"); 20 } 21 if (enemy_hitpoint <= 0) { 22 System.out.println(enemy_name + "は死んだ"); 23 break; 24 } 25 26 damage = enemy_attack - hero_deffence; 27 if (damage > 0) { 28 hero_hitpoint = hero_hitpoint - damage; 29 System.out.println(enemy_name + "は" + hero_name + "に" + damage + "のダメージを与えた"); 30 } 31 if (hero_hitpoint <= 0) { 32 System.out.println(hero_name + "は死んだ"); 33 break; 34 } 35 } 36 } 37} 38

投稿2019/06/02 02:35

takasima20

総合スコア7458

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

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

syunn

2019/06/02 02:59

ありがとうございます。三つのファイルできました。実行結果も同じでした。
guest

0

下記ご確認ください。
0. offenceが未定義なのにいきなり使われている→前の項や章で作られているのでは
0. getDeffenceはHeroクラスが持っているのでActorインスタンスから取得するのはおかしい
0. Actor hero = new Actor("主人公",100,20,10); Actorクラスとしてhero変数?
0. Heroクラスをnewしているところがどこにもない
0. もしかしたらActorクラスはHeroクラスを継承するように作らないといけないのでは
0. attackという名前で変数やメソッドが作られていてゴチャゴチャになっていないでしょうか

投稿2019/06/01 22:58

m.ts10806

総合スコア80850

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

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

syunn

2019/06/01 23:02

ご指摘ありがとうございます。確認してみます。
m.ts10806

2019/06/01 23:11

えっと、この段階で解決済みにされると解決しなかったときに再質問することになります。 今回は「~~というエラーが出ている」ことが要件なので、全て解消してから「解決済み」としてください。 いったんベストアンサー解除しておいてください。
m.ts10806

2019/06/02 00:12

ヒントは回答に書いた通りです。 変数の定義やオブジェクトの基本的な扱い方なので全部となると質問ではなくなります。 ひとつひとつ確認、解消していってください。
takasima20

2019/06/02 01:55

これって作成途中のやつをまねて動かなくて困ってる って感じに見えます。 設計図を見ずに組み立ててるようなもんっスよ。 とりあえず、完成してるのを探すか、 なんでエラーになるかが分かるくらいスキル上げするです。
m.ts10806

2019/06/02 02:01

ですね。 構成がきちんと分かってないとコピペでも動かないです。
syunn

2019/06/02 02:59

ご指摘ありがとうございます。深い理解に勤めます。
guest

0

自己解決

java

1public class Hero{ 2 private int hitPoint; 3 private int attack; 4 private int deffence; 5 6 public Hero(String name,int pHitPoint,int pAttack,int pDeffence){ 7 8 hitPoint = pHitPoint; 9 attack = pAttack; 10 deffence = pDeffence; 11 } 12 public int getHitPoint(){ 13 return hitPoint; 14 } 15 public void setHitPoint(int pHitPoint){ 16 hitPoint = pHitPoint; 17 } 18 19 public int getAttack(){ 20 return attack; 21 } 22 public void setAttack(int pAttack){ 23 attack = pAttack; 24 } 25 26 public int getDeffence(){ 27 return deffence; 28 } 29 public void setDffence(int pDeffence){ 30 deffence = pDeffence; 31 } 32} 33 34 35 36 37 38

java

1public class Actor extends Hero{ 2 private static int hitPoint; 3 private static int attack; 4 private static int deffence; 5 6 public Actor(String name){ 7 super(name,hitPoint,attack,deffence); 8 } 9 10 int offence = attack; 11 12 public void attack(Actor pActor){ 13 int damage = offence - pActor.getDeffence(); 14 if(damage <= 0) 15 damage = 1; 16 pActor.setHitPoint(pActor.getHitPoint() - damage); 17 System.out.println(pHero.getName() + "は" + pActor.getName() + "に" + damage + "のダメージを与えた"); 18 } 19}

投稿2019/06/02 03:00

syunn

総合スコア78

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問