今天我基本上试图创建一些JAVA代码,如果它打开,它会将一个actor移动到网格上的随机点。这是我到目前为止,但我有几个问题。我很困惑如何检查随机点是否打开。我用了
if (null == E get(Location loc))
但它不起作用,我得到四个错误。谁能解释一下?感谢。
编辑:纠正我的错误后,我目前遇到困难的部分是while循环。我希望这个循环一直运行,直到演员移动到随机空间。我目前正在尝试使用
while (place = getLocation());
基本上,我试图让它运行,而它开始的地方与目前的地方相同。我仍然遇到错误。
编辑:编辑我的代码后,我现在只收到2条错误消息。基本上我不知道为什么我会得到这些,有人可以帮助我吗?
F:\Lab III Car and Teleporter\Teleporter Project\TeleporterActor.java:42: error: cannot find symbol
if (null == get(loc))
^
symbol: method get(Location)
location: class TeleporterActor
F:\Lab III Car and Teleporter\Teleporter Project\TeleporterActor.java:46: error: incompatible types
while (place = getLocation());
^
required: boolean
found: Location
2 errors
public void act()
{
Location place = getLocation();
Grid<Actor> gr = getGrid();
int cols = gr.getNumRows();
int rows = gr.getNumCols();
do
{
Location loc = new Location(Math.random() * rows - 1, Math.random() * cols - 1);
if (null == get(loc))
moveTo(loc);
}
while (place = getLocation());
答案 0 :(得分:1)
这是不正确的语法。您需要使用'new'来创建新对象。
Location loc = new Location(Math.random(rows) - 1, Math.random(cols) - 1);
您还需要while()
子句中的条件。什么呢?
最后,在if检查中你的语法是关闭的:
if (null == E get(Location loc))
- 你想做什么?您创建了一个新位置,那么它可能会如何为空?
答案 1 :(得分:1)
您正在尝试使用方法的定义来调用它。如果方法定义为
public int doit(double d) { ...
然后你会像这样使用它
int result = doit(12.32);
所以,如果你愿意,可以申请
if (null == get(loc))
假设get(loc)返回null值,如果它为空。
要创建您的位置(除非您有静态方法位置,否则您可能也遇到问题。您可能想要
Location loc = new Location(Math.random(rows) - 1, Math.random(cols) - 1);