【问题标题】:Cannot find symbol in Java, GreenFoot在 Java、GreenFoot 中找不到符号
【发布时间】:2018-12-14 18:30:07
【问题描述】:

在开始之前,我想提一下我是编程新手,而且我真的很糟糕。如果您能想到任何可能导致我的问题的原因,那么可能值得检查。

我正在制作一个游戏,其中用户控制鲨鱼并且必须四处走动,吃鱼并躲避垃圾。用户每吃一条鱼就得一分。我遇到了一个问题,程序说它找不到方法,我似乎无法弄清楚。

这就是错误所在。它属于 Food 类(鱼,鲨鱼吃什么):

Actor foodHit = getOneIntersectingObject(Shark.class);
  if(foodHit!=null)
  {
    World MyWorld = (World)MyWorld;
    Counter counter = World.getCounter(); 
    // The error is apparently in this line above, here's the error code: "cannot find symbol -  method getCounter()".
    counter.addScore();
    MyWorld.removeObject(this);
  }

这是有问题的方法,它在 MyWorld 类中:

public Counter getCounter()
{
  return counter;
}

如果您要求,我可以回答任何问题并显示更多行。 我知道有时与新朋友打交道很令人沮丧,所以我很抱歉。 任何帮助都会很棒,感谢阅读!

【问题讨论】:

  • 您使用的是 Java,而不是 JavaScript btw :)
  • 由于您是编程新手,您可能希望 Food 类能够在全球范围内引用鲨鱼的世界。你在这里做什么:World MyWorld = (World)MyWorld; MyWorld 在你将它投射到 World 之前是什么类型?
  • 我正在观看他们输入的教学视频。我不明白那条线想要做什么。

标签: java methods greenfoot


【解决方案1】:

如果你有一个World 基类和一个扩展WorldMyWorld 类,并且getCounter() 方法在派生的MyWorld 类中,那么getCounter() 在你之后将不会“可见”将 MyWorld 类型对象强制转换为 World 类型对象。 getCounter() 只存在于“MyWorld”类型的对象中。
(并且无论如何都不需要向那个方向投射。MyWorld 的实例也是 World 的实例,不需要投射。但 World 的实例可能也可能不是 MyWorld 的实例,投射到 @需要 987654335@ 才能调用在MyWorld 中定义的方法)

此外,Java 中的标准是变量名以小写字母开头,类名以大写字母开头。因此,阅读您的代码的人通常会期望 MyWorld 是类名(对象类型名),myWorld 是变量名(对象实例名)。

我想,既然您是从视频中复制代码,您应该按照他们的做法进行操作,这样您就可以更轻松地跟随视频。但是如果我正在编写这个代码,我会想在 Shark 类上放置一个 eatFood() 方法,以便我可以编写

if (foodHit != null) {
    aShark.eatFood()
}

这样,世界投射和计数器更新代码被封装在 Shark 类中,而不是分散在您检查食物命中的任何地方。

【讨论】:

    【解决方案2】:

    我相信如果你改变代码。

    来自

    World MyWorld = (World)MyWorld;
    Counter counter = World.getCounter(); 
    

    World MyWorld = (World)MyWorld;
    Counter counter = MyWorld.getCounter(); 
    

    这应该可以解决它。我不得不发布答案,因为我没有足够的代表发表评论。让我知道这是否有效。

    【讨论】:

    • 不幸的是,我遇到了同样的错误,就好像该方法不在两个演员中一样。如果我把整个 Greenfoot 项目发给你会有帮助吗?
    • 是的,这样我可以更轻松地帮助您。
    猜你喜欢
    • 1970-01-01
    • 2013-02-08
    • 2015-09-20
    • 1970-01-01
    • 2011-03-17
    • 2019-01-08
    • 2014-02-07
    相关资源
    最近更新 更多