public class Sheeps {
int year;
ArrayList<Sheep> sheeps;
public Sheeps() {
sheeps = new ArrayList<Sheep>();
sheeps.add(new Sheep());
this.year = 1;
}
public void run(int y) {
while (year < y) {
year += 1;// 进入
int n = getSheepNum();
// 每只羊的年龄+1
for (int j = 0; j < n; j++) {
sheeps.get(j).setAge(sheeps.get(j).getAge() + 1);
}
// 遍历
for (int k = 0; k < n; k++) {
Sheep s = sheeps.get(k);
if (s.getAge() > 1 && s.getAge() < 9)
create();//create后原sheeps集合中的元素已增加,下次循环会遍历到1岁的羊,而1岁的羊不能create
else if (s.getAge() == 9) {
dead(k);// dead
k--;// *********指针移动,删除后,index--
}
}
System.out.println("第" + year + "年" + this.getSheepNum());
}
}
public void create() {
sheeps.add(new Sheep());
}
public void dead(int index) {
sheeps.remove(index);
}
public int getSheepNum() {
return sheeps.size();
}
public void print() {
for (Iterator iterator = sheeps.iterator(); iterator.hasNext();) {
System.out.println(iterator.next());