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如果您需要更多帮助,请问另一个问题,或者给我留言。