ThinkJava练习5.1的“GridWorld”

时间:2016-01-21 03:38:43

标签: java if-statement gridworld

新手完成thinkJava书并试图找出练习的答案之一。它要求我下载“GridWorld”文件并完成以下步骤:

  1. 编写一个名为moveBug的方法,将一个bug作为一个 参数并调用move。通过从main调用它来测试您的方法。
  2. 修改moveBug,使其调用canMove并仅在移动bug时移动 它可以。
  3. 修改moveBug,使其取整数n作为参数 将错误移动n次(如果可以的话)。
  4. 修改moveBug,以便如果bug无法移动,则会调用turn。
  5. 我被困在第3号,我无法弄清楚如何将n传递给“move()方法”

    - 请帮助我是新手

    我的代码:

    import info.gridworld.actor.ActorWorld;
    import info.gridworld.actor.Bug;
    import info.gridworld.actor.Rock;
    
    public class BugRunner
    {
        public static void main(String[] args)
        {
            ActorWorld world = new ActorWorld();
            Bug redBug = new Bug();
            world.add(redBug);
            world.add(new Rock());
            world.show();
            moveBug(redBug,5);
            System.out.println(redBug.getLocation());
        }
    
        public static void moveBug(Bug aBug, int n){
            if(aBug.canMove() == true){
            aBug.move();
            } else {
            aBug.turn();
            }
        }
    
    
    }
    

2 个答案:

答案 0 :(得分:0)

你的意思是你被困在第3位:

  
      
  1. 修改moveBug,使其获取一个整数n作为参数,并将错误移动n次(如果可以的话)。
  2.   

这意味着写一个循环,循环n次,每次迭代调用move()一次,如果canMove()返回true。

BTW:if (canMove() == true) {...}是说if (canMove()) {...}的漫长道路。

修复if语句的缩进。

答案 1 :(得分:0)

感谢你指点我@Andreas 我的解决方案有效:

public static void moveBug(Bug aBug, int n){
    for(int i = 0; i < n; i++){
        if(aBug.canMove())
           {
           aBug.move();
           } else {
           aBug.turn();
           }
       }
   }