在Java中找不到符号,GreenFoot

在Java中找不到符号,GreenFoot,java,methods,greenfoot,Java,Methods,Greenfoot,在我开始之前,我想提一下,我是编程新手,我真的很糟糕。如果你能想出任何可能导致我的问题的原因,它可能值得检查 我正在制作一个游戏,用户控制一条鲨鱼,必须四处走动,吃鱼和躲避垃圾。用户每次吃鱼都会得到一分。我遇到了一个问题,程序说它找不到方法,我似乎也弄不明白 这就是错误所在。它属于食物类(鱼,鲨鱼吃什么): 这就是所讨论的方法,它属于MyWorld类: public Counter getCounter() { return counter; } 我可以回答任何问题,并显示更多的行如果你要

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

我正在制作一个游戏,用户控制一条鲨鱼,必须四处走动,吃鱼和躲避垃圾。用户每次吃鱼都会得到一分。我遇到了一个问题,程序说它找不到方法,我似乎也弄不明白

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

这就是所讨论的方法,它属于MyWorld类:

public Counter getCounter()
{
  return counter;
}
我可以回答任何问题,并显示更多的行如果你要求。 我知道有时和陌生人打交道会让人沮丧,所以我先表示歉意。
任何帮助都将是惊人的,谢谢阅读

我相信如果你改变密码


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

如果您有一个
World
基类和一个扩展
World
MyWorld
类,并且
getCounter()
方法在派生的
MyWorld
类中,那么
getCounter()
将不可见将
MyWorld
type对象强制转换为
World
type对象后
getCounter()
仅“在”
MyWorld
type对象中”存在。
(反正也不需要向那个方向强制转换。
MyWorld
的实例也是
World
的实例,不需要强制转换。
World
的实例也可能是
MyWorld
的实例,强制转换到
MyWorld
是调用
MyWorld
中定义的方法所必需的)

而且,在Java中,标准的做法是以小写字母开始变量名,以大写字母开始类名。因此,代码的读者通常希望
MyWorld
是类名(对象类型名),
MyWorld
是变量名(对象实例名)

我想,既然你是从视频中复制代码,你就应该像他们那样做,这样你就可以更容易地跟随视频。但是如果我编写这个代码,我想在Shark类上放一个eatFood()方法,这样我就可以编写

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

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

您使用的是Java,而不是JavaScript,顺便说一句:)因为您是编程新手,所以您可能希望食物类能够全局引用Shark的世界。你在这里做什么:
World MyWorld=(World)MyWorld我的世界是什么类型的,在你们把它投给世界之前?我在看一个教学视频,他们在那里键入了那个。我不明白那一行想做什么。不幸的是,我得到了同样的错误,好像方法不在两个参与者中。如果我把整个绿足项目都寄给你会有帮助吗?是的,那会让我更容易帮助你。
World MyWorld = (World)MyWorld;
Counter counter = World.getCounter(); 
World MyWorld = (World)MyWorld;
Counter counter = MyWorld.getCounter(); 
if (foodHit != null) {
    aShark.eatFood()
}