跟踪x和y的位置类

时间:2015-01-22 18:40:56

标签: java location

我正在为学校做练习,我需要编写一个程序来跟踪网格中数字的x,y位置。

  • up()移动数字。
  • down()移动数字。
  • left()向左移动。
  • right()向右移动。

这是我到目前为止所遇到的问题,我在运行程序时只得到0,0。

我不擅长编程,如果它非常糟糕,那就很抱歉。

package øving_1;

public class Location {


    private int xAkse;
    private int yAkse;


    public Location(){
        xAkse = 0;
        yAkse = 0;      
    }

    public void right(int i){
        xAkse++;
    }

    private void left(int i){
        xAkse--;

    }

    private void up(int i){
        yAkse--;

    }

    private void down(int i){
        yAkse++;
    }
    public int getPosition(){
        return xAkse;
    }
    public int getPosition2(){
        return yAkse;
    }


    public static void main(String[] args) {

        Location location = new Location();
        location.right(0);
        location.left(0);
        location.up(0);
        location.down(0);

        System.out.print("Posisjonen til x, y er: ");
        System.out.print(location.getPosition() + ", " + location.getPosition2());


    }

}

4 个答案:

答案 0 :(得分:0)

未使用 i 参数,但其余代码是正确的。

这正是你所期望的:如果你向右移动一步,然后向前迈出一步,然后向上迈出一步,然后向下一步,你再次在你所在的地方开始。

它的几何形状,宝贝。

答案 1 :(得分:0)

你应该使用当前的主要方法获得0,0。

您从位置0,0开始。然后你打电话给right(),它会向右移动1个单位。你现在在1,0。然后你打电话给left(),让你离开1个单位。现在你回到0,0。然后拨打up(),然后转到0,1位置。最后,您拨打down(),这会让您回到0,0位置。

尝试做类似的事情:

Location location = new Location();
location.right(0);
location.right(0);
location.right(0);
location.down(0);

System.out.print("Posisjonen til x, y er: ");
System.out.print(location.getPosition() + ", " + location.getPosition2());

你应该获得职位3,-1

答案 2 :(得分:0)

解释:您获得(0, 0)因为:

  1. Location location = new Location() - > (0,0);
  2. location.right(0) - > xAkse++ - > ( 1 ,0);
  3. location.left(0) - > xAkse-- - > ( 0 ,0);
  4. location.up(0) - > yAkse-- - > (0, -1 );
  5. location.down(0) - > yAkse++ - > (0, 0 );
  6. 是的。

    如果您想改进您的代码,您可以添加一个允许您创建特定位置的构造函数:

    public Location(int xAkse, int yAkse){
        this.xAkse = xAkse;
        this.yAkse = yAkse;      
    }
    

    如果您想要向上,向下,向左和向右移动一定数量,请使用当前未使用的i参数,例如:

    public void up(int i) {
        yAkse -= i;
    }
    
    public void right(int i){
        xAkse += i;
    }
    

    现在你可以做到:

    Location location = new Location(10, 10);
    location.right(3);
    location.up(5);
    

    位置将为(13, 5)

    另一个可读性提示:更改getPosition()getPosition2()中的getXAkse()getYAkse()个名称。

答案 3 :(得分:0)

我建议使用包含Point的自定义类。

看起来像这样:

import java.awt.Point;

public class CustomPoint {
    //VARIABLE
    private Point point = null;

    //CONSTRUCTOR
    public CustomPoint(int x, int y) {
        this.point = new Point(x, y);
    }

    //METHODS
    public void goUp() {
        this.point.y++;
    }

    public void goDown() {
        this.point.y--;
    }

    public void goRight() {
        this.point.x++;
    }

    public void goLeft() {
        this.point.x--;
    }

    public void printCurrentLocation() {
        System.out.println("Current Location: (" + point.x + "/" + point.y + ")");
    }

    //GETTER AND SETTER
    public Point getPoint() {
        return point;
    }

    public void setPoint(Point point) {
        this.point = point;
    }

}

我举了一个例子,说明如何跟踪你的观点:

public class RunMe {



public static void main(String[] args) {

     CustomPoint cp = new CustomPoint(0, 0);

            cp.printCurrentLocation();
            cp.goDown();
            cp.printCurrentLocation();
            cp.goUp();
            cp.printCurrentLocation();
            cp.goLeft();
            cp.printCurrentLocation();
            cp.goRight();
            cp.printCurrentLocation();

        }
    }

产生以下输出的内容:

Current Location: (0/0)
Current Location: (0/-1)
Current Location: (0/0)
Current Location: (-1/0)
Current Location: (0/0)
  

大优势

如果您需要计算2点之间的距离,则已有解决方案!

CustomPoint a = new CustomPoint(0, 0);
CustomPoint b = new CustomPoint(3, 2);

System.out.println(a.getPoint().distance(b.getPoint()));

在控制台上打印以下行:

3.605551275463989