jiankeabcd 2016-06-03 13:32 采纳率: 73.9%
浏览 12799
已采纳

JAVA 关于 cannot resolve method

写一个打怪兽的小程序,需要将MonsterBattle3改动一下使得它可以使用定义的接口

提示 Battleable的接口只定义了receiveDamage的method,只有这个可见。
receiveDamage中,checkStatus 的method也被呼出,但Battleable interface中没有指定
hitPoint是instance,没有在interface中声明。
直接呼出将会被检查,接下来只要确定呼出的method

我直接从日语翻译过来的。。。所以很奇怪。
我也看不懂他想表达什么

hitPointフィールドもインタフェースでは宣言されていない。直接呼
出すメソッドが可視かどうかだけがチェックされ、あとは呼び出されたメソッドが動作すればよいのです。

 public class MonsterBattle3 {


    public static void main(String[] args) {
        Monster[] monsterArray = new Monster[3]; // 書き換えた。

        monsterArray[0] = new Slime();

        int power = 5;
        for (int n = 1; n <= 10; n++) {
            System.out.println("% Start Round " + n + "!");
            for (int i = 0; i < 3; i++) {
                monsterArray[i].receiveDamage(power); // (1)
            }
        }
    }
}

 public abstract class Monster {

    String name;
    int hitPoint;  // or health point
    String status = "active"; // hitPoint <= 0で"killed"になる。


    public boolean checkStatus() {
        if (hitPoint <= 0) {
            System.out.println(name + " was killed.");
            status = "killed";
            return false;  // killedになったときにfalseを返す。
        } else {
            return true;  // activeならtrueを返す。
        }
    }
}

 public class Slime extends Monster implements Battleable{
    // Constructor
    Slime() {
        name="Slime";
        hitPoint=50;
        System.out.println(name + "が現れた!");
    }

    public void receiveDamage(int p) {
        if(status.equalsIgnoreCase("active") ) {  // activeのときだけ戦う。
            int damage= p*5;
            hitPoint = hitPoint - damage;
            checkStatus();
        }
    }
}
 public interface Battleable {
    void receiveDamage(int p);
}

修改MonsterBattle3使其可以执行并不报错
可能没人看得懂要做什么。。。
可是我真的不知道应该怎么办

  • 写回答

2条回答 默认 最新

查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料