我有问题让我的ArrayList正确添加.当我在for循环完成后打印ArrayList时,ArrayList的长度是正确的,但是每个元素都是相同的(创建的最后一个Coordinate).
有人可以修复(并解释)下面的代码吗?
public class test {
private static ArrayList<Coordinate> mOrigCoords;
private static ArrayList<Coordinate> mNewCoords;
private static int mListSize;
private static int mPixelsX;
public static void main(String[] args)
{
mOrigCoords = new ArrayList<Coordinate>();
mNewCoords = new ArrayList<Coordinate>();
mPixelsX = 480;
int j = 0;
Coordinate newCoord = new Coordinate(0,0);
for(int i = 0; i < 96; i++)
{
j = j + 5;
newCoord.setX(j);
newCoord.setY((int)(Math.random()*300));
mOrigCoords.add(newCoord);
}
mListSize = mOrigCoords.size();
for(int n = 0; n < mListSize; n++)
{
System.out.println("test " + mOrigCoords.get(n).toString());
}
}
}
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助!
Laj*_*pad 10
代替
Coordinate newCoord = new Coordinate(0,0);
for(int i = 0; i < 96; i++)
{
j = j + 5;
newCoord.setX(j);
newCoord.setY((int)(Math.random()*300));
mOrigCoords.add(newCoord);
}
Run Code Online (Sandbox Code Playgroud)
你应该有
Coordinate newCoord = null;
for(int i = 0; i < 96; i++)
{
newCoord = new Coordinate(0,0);
j = j + 5;
newCoord.setX(j);
newCoord.setY((int)(Math.random()*300));
mOrigCoords.add(newCoord);
}
Run Code Online (Sandbox Code Playgroud)
这样,arrayList将保存许多对象而不是只有一个.ArrayList中的所有元素都指向同一个对象,这是导致问题的原因.
归档时间: |
|
查看次数: |
2931 次 |
最近记录: |