以下:我使用自己的对象创建一个 ArrayList,该对象保留两个 int(x,y)
但我只得到 0 而不是数字。我不明白为什么它不起作用。
public class Snake {
public class SnakeBody {
public int x;
public int y;
SnakeBody(int x, int y){
x = this.x;
y = this.y;}
}
protected ArrayList<SnakeBody> SnakeBody = new ArrayList<SnakeBody>();
protected PointF Fruit;
protected boolean GameStarted = false;
//Constructor
public Snake(){}
public void startSnake()
{
if(!GameStarted)
{
GameStarted = true;
SnakeBody.add(new SnakeBody(1,14));
SnakeBody.add(new SnakeBody(2,14));
SnakeBody.add(new SnakeBody(3,14));
int itemcount = SnakeBody.size();
Log.d("Snake.java:Game started: ", "" + itemcount);
for(int i=0; i<itemcount; i++){
Log.d("First Snake created: XY->", "" + SnakeBody.get(i).x + ":" + SnakeBody.get(i).y);
}
}
}
这就是我得到的 Log.d 输出:
Snake.java:游戏开始:﹕3
创建的第一条蛇:XY->:0:0
创建的第一条蛇:XY->:0:0
创建的第一条蛇:XY->:0:0
最佳答案
你想改变
SnakeBody(int x, int y){
x = this.x;
y = this.y;
}
至
SnakeBody(int x, int y){
this.x = x;
this.y = y;
}
您实际上所做的是将类的值分配给接收到的参数,它永远不会更新 SnakeBody
顺便说一句,我认为将构造函数的参数命名为与类变量相同的名称是一种不好的做法,就像省略 this
关键字一样,不清楚分配给什么什么。
关于java - ArrayList 不保存我的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28460668/