需要数组,但找到对象

时间:2018-09-06 19:25:04

标签: java arrays

我正在尝试为自定义对象Room创建访问器,该访问器具有一个由瓦片组成的网格,每个瓦片都有一个整数值。我希望getSteps方法返回该整数值,给定关联Room对象的坐标;我还希望steppedOn方法将其递增1。

public Room(int tilesLong, int tilesWide) {
    length = tilesLong + 2;
    width = tilesWide + 2;
}

 private int getSteps(int tileX, int tileY) {
    int steps = this[tileX][tileY];  //Problem code
    return steps;
}

public void steppedOn(int tileX, int tileY) {
    System.out.println(room[tileX][tileY] + 1);
}

我知道这可能不是正确的方法,但是我迷失了其他方法。

2 个答案:

答案 0 :(得分:1)

根据this的{​​{3}}:

  

在实例方法或构造函数中,this是对当前对象的引用,该对象是正在调用其方法或构造函数的对象。

因此,在您的getSteps()方法中,您试图在对象上调用[tileX][tileY],但这实际上没有任何意义。如果对象具有2d array类变量,则需要在[tileX][tileY]上调用array,而不是直接在this上调用。

  

我还希望steppedOn方法将其递增1。

在您的steppedOn()方法中,您只打印数字加一。但是,这只会增加您打印出的数字,而不是实际值。实际增加值

public void steppedOn(int tileX, int tileY) {
     System.out.println(room[tileX][tileY]++);
}

答案 1 :(得分:0)

在线:

int steps = this[tileX][tileY];  //Problem code

您正试图挽救您,却不正确地拨打了array

首先,您需要声明一个array。并在您的签名中,声明要传递给数组的值。所以看起来像这样:

public class room {

   int length, width;
   int[][] steps;

   public room(int tilesLong, int tilesWide) {
       length = tilesLong + 2;
       width = tilesWide + 2;
       steps = new int[width][length];
   }

   private int getSteps(int tileX, int tileY, int step) {
       this.steps[tileX][tileY] = step;
       return steps[tileX][tileY];
   }

   public void steppedOn(int tileX, int tileY) {
       System.out.println(steps[tileX][tileY] + 1);
   }
}