前提・実現したいこと
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
コード全文は、こちらにあります。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/15 10:45