有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Karel中点练习(Java)中使用getter和setter

我写这段代码是为了使用比本课程预期的更多的Java元素。但是我很难让它在四个方向上都工作。getter和setter嵌入到使Karel移动的方法中。如果我能得到任何帮助,使这个鳕鱼工作,那将是伟大的

import stanford.karel.*;

public class MidpointFindingKarel extends SuperKarel {


public void run(){
    while(facingEast()){
        moveEast();
    }
    while(facingNorth()){
        moveNorth();
    }
    while(facingWest()){
        moveWest(moveEast());
    }       
    while(facingSouth()){
        moveSouth(moveNorth());
    }
}

    private int moveEast(){
        int width = 0;
        while(frontIsClear()){
            width++;
            move();
        }
        turnLeft();
        width /= 2;
        return width;
    }

    private int moveNorth(){
        int height = 0;
        while(frontIsClear()){
            height++;
            move();
        }
        turnLeft();
        height /= 2;
        return height;
    }

    private void moveWest(int _width){
        for(int _w = 0; _w < _width; _w++){
            move();
        }
        turnLeft();
    }

    private void moveSouth(int _height){
        for(int _h = 0; _h < _height; _h++){
            move();
        }
        turnLeft();
    }

}

共 (1) 个答案

  1. # 1 楼答案

    请你具体说明一下,你的代码应该做什么? 如果你想做的就是在每面墙的中点放一个传呼机,我会做一个单独的方法。 如果我的解决方案不能回答您的问题,请提前道歉

    import stanford.karel.*;
    
    public class MidpointFindingKarel extends SuperKarel {
    public void run(){
        while(facingEast()){
            moveEast();
        }
        while(facingNorth()){
            moveNorth();
        }
        while(facingWest()){
             moveEast(); // I did not understand what "moveWest(moveEast());" was for. 
        }       
        while(facingSouth()){
            moveNorth();// I did not understand what "moveSouth(moveNorth())" was for. 
        }
    }
    
        private void moveEast(){
            int width = 0;
            while(frontIsClear()){
                width++;
                move();
            }
            goBackPutBeeperReturn(width); // goes back half of the "width", puts beeper, returns.
            turnLeft();
           // width /= 2; 
            // return width; 
        }
    
        private void moveNorth(){
            int height = 0;
            while(frontIsClear()){
                height++;
                move();
            }
            goBackPutBeeperReturn(height);
            turnLeft();
           // height /= 2;
           // return height;
        }
    
    
      //Pre-condition: Karel has finished going along a wall and has its length stored somewhere. 
      //Post-condition: Karel has put a beeper in the midpoint and is back to the end of that wall
        private void goBackPutBeeperReturn(int wallLength){
               turnAround();
               for(int loop = 0 ; loop < wallLength/2 ; loop++){
                move();   
               }
               putBeeper();
               turnAround();
               for(int loop = 0 ; loop < wallLength/2 ; loop++){
                    move();
           }}}
    
           /*
       private void moveWest(int _width){
            for(int _w = 0; _w < _width; _w++){
                move();
            }
            turnLeft();
        }
    
        private void moveSouth(int _height){
            for(int _h = 0; _h < _height; _h++){
                move();
            }
            turnLeft();
    
        }
    
    
    }*/