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

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

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

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

1755閲覧

enumで「シンボルを見つけられません」となる

gpioblink

総合スコア12

Java

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2018/12/15 09:55

前提・実現したいこと

AndroidのJavaでenumを使ったプログラムを書いています。
コンストラクタのあるenumのインポート方法がわかりません。
Android Studio上では、エラーは出ないのですが、コンパイルすると、
「エラー: シンボルを見つけられません」となります。どうすれば呼び出せるでしょうか。

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

$ javac -Xlint:unchecked battle/Player.java battle/Player.java:3: エラー: シンボルを見つけられません import com.yt8492.nakimanebattle.mocks.battle.PokemonType; ^ シンボル: クラス PokemonType 場所: パッケージ com.yt8492.nakimanebattle.mocks.battle battle/Player.java:10: エラー: シンボルを見つけられません private PokemonType type; ^ シンボル: クラス PokemonType 場所: クラス Player battle/Player.java:18: エラー: シンボルを見つけられません public Player( final int hp_, final PokemonType type_ ){ ^ シンボル: クラス PokemonType 場所: クラス Player battle/Player.java:379: エラー: シンボルを見つけられません public double getEffectiveness(PokemonType opponentType){ ^ シンボル: クラス PokemonType 場所: クラス Player battle/Player.java:386: エラー: シンボルを見つけられません public PokemonType Attack(final PokemonType attack_type ){ ^ シンボル: クラス PokemonType 場所: クラス Player battle/Player.java:386: エラー: シンボルを見つけられません public PokemonType Attack(final PokemonType attack_type ){ ^ シンボル: クラス PokemonType 場所: クラス Player battle/Player.java:394: エラー: シンボルを見つけられません public void TakeDamage( final PokemonType opponent_type ){ ^ シンボル: クラス PokemonType 場所: クラス Player battle/Player.java:398: エラー: シンボルを見つけられません public PokemonType Type(){ ^ シンボル: クラス PokemonType 場所: クラス Player battle/Player.java:16: エラー: シンボルを見つけられません private HashMap typeTable = new HashMap<PokemonType, Double>(); ^ シンボル: クラス PokemonType 場所: クラス Player battle/Player.java:23: エラー: シンボルを見つけられません if(this.type == PokemonType.normal) { ^ シンボル: 変数 PokemonType 場所: クラス Player battle/Player.java:24: エラー: シンボルを見つけられません typeTable.put(PokemonType.normal, NORMAL); ^ シンボル: 変数 PokemonType 場所: クラス Player battle/Player.java:25: エラー: シンボルを見つけられません typeTable.put(PokemonType.fire, NORMAL); ^ ...以下、同様のエラーが続く... battle/Player.java:113: エラー: シンボルを見つけられません typeTable.put(PokemonType.rock, VERY_EFFECTIVE); ^ シンボル: 変数 PokemonType 場所: クラス Player battle/Player.java:114: エラー: シンボルを見つけられません typeTable.put(PokemonType.ghost, NORMAL); ^ シンボル: 変数 PokemonType 場所: クラス Player エラー100個

該当のソースコード

PokemonType.java

Java

1 2package com.yt8492.nakimanebattle.mocks.battle; 3// 名前の通り, ポケモン/技のタイプの列挙 4public enum PokemonType{ 5 normal("normal"), 6 water("water"), 7 fire("fire"), 8 electric("electric"), 9 ...タイプ名が続く... 10 fairy("fairy"); 11 12 private final String typename; 13 14 private PokemonType(final String typename_){ 15 this.typename = typename_; 16 } 17 18 // 受け取った文字列からタイプを判定して返す 19 // ->このクラス外の音声比較処理から返された文字列を主に受け取ることになる 20 public static PokemonType StrToType( final String typename ){ 21 ...省略... 22 } 23} 24 25

Player.java

Java

1import java.util.HashMap; 2import com.yt8492.nakimanebattle.mocks.battle.PokemonType; 3 4// バトル中のプレイヤーを表すクラス 5public class Player{ 6 private int hp; 7 private PokemonType type; 8 private static final double BASE_DAMAGE = 20; 9 private static final double NOT_AFFECTED = 0.0; 10 private static final double NORMAL = 1.0; 11 private static final double NOT_VERY_EFFECTIVE = 0.5; 12 private static final double VERY_EFFECTIVE = 2.0; 13 private HashMap typeTable; 14 15 public Player( final int hp_, final PokemonType type_ ){ 16 this.hp = hp_; 17 this.type = type_; 18 19 typeTable = new HashMap<PokemonType, Double>(); 20 //defendertype, effectiveness 21 if(this.type == PokemonType.normal) { 22 typeTable.put(PokemonType.normal, NORMAL); 23 typeTable.put(PokemonType.fire, NORMAL); 24 typeTable.put(PokemonType.water, NORMAL); 25 typeTable.put(PokemonType.electric, NORMAL); 26 typeTable.put(PokemonType.grass, NORMAL); 27 typeTable.put(PokemonType.ice, NORMAL); 28 typeTable.put(PokemonType.martial, NORMAL); 29 typeTable.put(PokemonType.poison, NORMAL); 30 typeTable.put(PokemonType.ground, NORMAL); 31 typeTable.put(PokemonType.flying, NORMAL); 32 typeTable.put(PokemonType.esper, NORMAL); 33 typeTable.put(PokemonType.insect, NORMAL); 34 typeTable.put(PokemonType.rock, NOT_VERY_EFFECTIVE); 35 typeTable.put(PokemonType.ghost, NOT_AFFECTED); 36 typeTable.put(PokemonType.dragon, NORMAL); 37 typeTable.put(PokemonType.evil, NORMAL); 38 typeTable.put(PokemonType.steel, NOT_VERY_EFFECTIVE); 39 typeTable.put(PokemonType.fairy, NORMAL); 40 } 41 ...相性表のリストが続く... 42 43 else if(this.type == PokemonType.fairy){ 44 typeTable.put(PokemonType.normal, NORMAL); 45 typeTable.put(PokemonType.fire, NOT_VERY_EFFECTIVE); 46 typeTable.put(PokemonType.water, NORMAL); 47 typeTable.put(PokemonType.electric, NORMAL); 48 typeTable.put(PokemonType.grass, NORMAL); 49 typeTable.put(PokemonType.ice, NORMAL); 50 typeTable.put(PokemonType.martial, VERY_EFFECTIVE); 51 typeTable.put(PokemonType.poison, NOT_VERY_EFFECTIVE); 52 typeTable.put(PokemonType.ground, NORMAL); 53 typeTable.put(PokemonType.flying, NORMAL); 54 typeTable.put(PokemonType.esper, NORMAL); 55 typeTable.put(PokemonType.insect, NORMAL); 56 typeTable.put(PokemonType.rock, NORMAL); 57 typeTable.put(PokemonType.ghost, NORMAL); 58 typeTable.put(PokemonType.dragon, VERY_EFFECTIVE); 59 typeTable.put(PokemonType.evil, VERY_EFFECTIVE); 60 typeTable.put(PokemonType.steel, NOT_VERY_EFFECTIVE); 61 typeTable.put(PokemonType.fairy, NORMAL); 62 } 63 64 } 65 66 public double getEffectiveness(PokemonType opponentType){ 67 return (double) typeTable.get(opponentType); 68 } 69 70 // 攻撃処理 相手にする攻撃のタイプを返す 71 // このクラス外で実行された音声比較処理が返した 72 // 声に最も似たポケモンのタイプを受け取って処理する 73 public PokemonType Attack(final PokemonType attack_type ){ 74 // 処理:未実装 75 this.type = attack_type; 76 return attack_type; 77 } 78 79 // ダメージを受ける処理 80 // 相手のタイプを受け取って、タイプによって異なる量のhpを減らす 81 public void TakeDamage( final PokemonType opponent_type ){ 82 hp = (int) ((double)hp - getEffectiveness(opponent_type) * BASE_DAMAGE); 83 } 84 85 public PokemonType Type(){ 86 return type; 87 } 88 89 public int HP(){ 90 if(hp<0) return 0; 91 return hp; 92 } 93 94 // 戦闘不能(HP0)かどうか 95 public boolean WasKnockedDown(){ 96 return ( hp <= 0 ); 97 } 98}

試したこと

この部分だけ素のJavaとしてパッケージを切り出してみてもうまく行きませんでした。

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

javac 11.0.1

コード全文は、こちらにあります。

よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

いったん、ソースの上に(Player.java)の上にenumをコピー、enumのパッケージとimportを消して、やってみてください。

java

1enum PokemonType 2{ 3} 4 5public class Player 6{ 7}

多分、これは**カレントディレクトリ(相対パス)**を理解していないからでしょう。
実行時のパス(コンパイル時のパス)が、
現在のパスにPlayer、また、comフォルダ、yt8492,nakimanebattle,mocks,battleと続いてPokemonTypeがある状態でないといけないので、多分これが理由でしょう。

投稿2018/12/15 10:28

yukkuri

総合スコア624

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

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

gpioblink

2018/12/15 10:45

回答ありがとうございます!! 教えていただいた通りにやってみたところ、コンパイルを通すことをできました!! また、AndroidにActivityを作ってそこから実行したところ、特に変更することなくコンパイルが通ってしまいました。ご指摘いただいた通り、この部分だけでコンパイルしようとしたのが問題だったようです。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問