Java 什么';这是我的错误吗?我怎样才能修好它?
更新:我只需要回答底部的问题 这是一种特殊类型的Java 什么';这是我的错误吗?我怎样才能修好它?,java,gridworld,Java,Gridworld,更新:我只需要回答底部的问题 这是一种特殊类型的SpiralBug,所以我在互联网上没有看到任何这样的例子。这个SpiralBug使用了SpiralBug代码,但是它有额外的功能,一旦它到达BoundedGrid的边界并且无法继续前进,它必须再次在网格的中心重新启动,这就是我的问题开始的地方。这是我的代码,没有错误 我的SpiralBugRunner代码 import info.gridworld.actor.ActorWorld; import info.gridworld.
SpiralBug
,所以我在互联网上没有看到任何这样的例子。这个SpiralBug
使用了SpiralBug
代码,但是它有额外的功能,一旦它到达BoundedGrid
的边界并且无法继续前进,它必须再次在网格的中心重新启动,这就是我的问题开始的地方。这是我的代码,没有错误
我的SpiralBugRunner代码
import info.gridworld.actor.ActorWorld;
import info.gridworld.grid.Location;
import java.awt.Color;
public class SpiralBugRunner
{
public static void main( String args[] )
{
ActorWorld world = new ActorWorld( );
SpiralBug bug1 = new SpiralBug(0);
world.add (new Location(4, 4), bug1 );
world.show( );
}
}
还有螺旋虫
import info.gridworld.actor.Bug;
import info.gridworld.actor.Actor;
import info.gridworld.grid.Location;
public class SpiralBug extends Bug
{
private int sideLength;
private int steps;
public SpiralBug(int n)
{
sideLength = n;
steps = 0;
}
public void act()
{
if (steps < sideLength && canMove())
{
move();
steps++;
}
else
{
turn();
turn();
steps = 0;
sideLength++;
}
}
public void moveTo(Location newLocation)
{
Location loc = new Location(getGrid().getNumCols(), getGrid().getNumRows());
moveTo(loc);
sideLength = 0;
}
}
import info.gridworld.actor.Bug;
导入info.gridworld.actor.actor;
导入info.gridworld.grid.Location;
公共类SpiralBug扩展了这个Bug
{
私人内特边长;
私有int步骤;
公共螺旋虫(int n)
{
边长=n;
步长=0;
}
公共无效法
{
如果(步数<边长(&canMove())
{
move();
steps++;
}
其他的
{
转动();
转动();
步长=0;
边长++;
}
}
公共无效移动到(位置新建位置)
{
Location loc=新位置(getGrid().getNumCols(),getGrid().getNumRows());
移动到(loc);
边长=0;
}
}
我真正的问题是,我应该如何设置将bug重置到中间位置,以便在它无法移动后再次运行它?您在其内部调用此方法,导致StackOverflow错误
public void moveTo(Location newLocation)
{
Location loc = new Location(getGrid().getNumCols(), getGrid().getNumRows());
moveTo(loc);
sideLength = 0;
}
这是错误的方法。这应该在move()
方法中。moveTo
方法获取一个位置并移动到该位置。这不应该被覆盖
将其更改为:
public void move(Location newLocation)
{
Location loc = new Location(getGrid().getNumCols(), getGrid().getNumRows());
moveTo(loc);
sideLength = 0;
}
感谢您尝试回答我的问题,但这只会帮助我的代码不再有错误。现在,当它不能继续向前移动时,在网格的中间出现bug是有问题的。@ PowerofMerlin,这是你的代码试图完成的问题。您的问题是“我的错误是什么?我如何修复它?”我回答了这个问题。@PowerofMerlin如果您需要更多帮助,请问另一个问题,或者给我留言。