我正在尝试为自定义对象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);
}
我知道这可能不是正确的方法,但是我迷失了其他方法。
答案 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);
}
}