网格世界实验室的困难

时间:2011-12-03 22:08:56

标签: java

今天我基本上试图创建一些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());

2 个答案:

答案 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);