Processing 正在处理中填充对象数组-所有对象都相同

Processing 正在处理中填充对象数组-所有对象都相同,processing,Processing,我向你保证,我已经花了数小时在互联网上寻找解决方案,但我急需一双新的眼睛。我目前正在使用ArrayList,但尝试使用普通对象数组时也出现了同样的问题。在上下文中,我试图模拟一种流行病,并试图在社区边界内用随机位置填充“Person”类型的数组。目前的人员类别如下: private PVector pos; class Person{ public Person(float x, float y){ pos = new PVector(x, y); } void sho

我向你保证,我已经花了数小时在互联网上寻找解决方案,但我急需一双新的眼睛。我目前正在使用ArrayList,但尝试使用普通对象数组时也出现了同样的问题。在上下文中,我试图模拟一种流行病,并试图在社区边界内用随机位置填充“Person”类型的数组。目前的人员类别如下:

private PVector pos;
class Person{

 public Person(float x, float y){
    pos = new PVector(x, y);
  }
  
  void show(){
    ellipse(pos.x, pos.y, 10, 10);
  }
  
  float xPos(){
    return pos.x;
  }
  
}
private float size;
private PVector origin;
private ArrayList<Person> personArr;

class Community{
  
  public Community(float x, float y, float size_){
    origin = new PVector(x, y);
    size = size_;
    
    personArr = new ArrayList<Person>();
  }
  
  void show(){
    
    noFill();
    rect(origin.x, origin.y, size, size);
    
    showPersons();
      
  }
  
  void setupCommunity(){
    
    for(int i = 0; i < initialPopulation; i++){
      
      float x1 = random(origin.x, origin.x + size);
      float y1 = random(origin.y, origin.y + size);
      
      Person person = new Person(x1, y1);
      personArr.add(person);
      
    }
    
  }
  
  void showPersons(){
    for(int i = 0; i < personArr.size(); i++){
      personArr.get(i).show();
    }
  }
  
}
我的社区课程如下:

private PVector pos;
class Person{

 public Person(float x, float y){
    pos = new PVector(x, y);
  }
  
  void show(){
    ellipse(pos.x, pos.y, 10, 10);
  }
  
  float xPos(){
    return pos.x;
  }
  
}
private float size;
private PVector origin;
private ArrayList<Person> personArr;

class Community{
  
  public Community(float x, float y, float size_){
    origin = new PVector(x, y);
    size = size_;
    
    personArr = new ArrayList<Person>();
  }
  
  void show(){
    
    noFill();
    rect(origin.x, origin.y, size, size);
    
    showPersons();
      
  }
  
  void setupCommunity(){
    
    for(int i = 0; i < initialPopulation; i++){
      
      float x1 = random(origin.x, origin.x + size);
      float y1 = random(origin.y, origin.y + size);
      
      Person person = new Person(x1, y1);
      personArr.add(person);
      
    }
    
  }
  
  void showPersons(){
    for(int i = 0; i < personArr.size(); i++){
      personArr.get(i).show();
    }
  }
  
}
这样做的目的是在社区矩形中显示Persons数组中的所有人,这看起来就像一个人,因为他们都在同一位置绘制。我知道这一点,因为在调试时,我看到在社区设置中添加personArr时,随机位置是不同的,但每次添加到数组列表时,整个列表都填充了完全相同的人。这导致了由最后一个创建的人组成的整个列表。如果有人知道原因,我将不胜感激!我只需要用个人对象填充列表!谢谢你(爸爸){ largestPop=人口。获取(i); } } //用户界面代码 冲程(0,0,0); 线(origin.x,origin.y,origin.x+(int)长度,origin.y); 填充(0); 文本大小(15); 文本(“+largestPop,origin.x-60,origin.y-长度); 文本(“+dataLength,origin.x+length,origin.y+25); 填充(0); 文本大小(15); 文本(“时间”,(浮动)(origin.x+length/2-length/10),origin.y+30); 文本(yLable,origin.x-100,(float)(origin.y-length/2)); //计算图形点 线(origin.x,origin.y,origin.x,origin.y-(int)长度); 双Y间期=长度/(最大Pop); 双间隔=长度/数据长度; 对于(int i=0;iPVector pos位于Person类之外。因此,所有Person对象都使用相同的位置

社区课程也是如此。如果创建多个社区,可能会导致奇怪的错误