有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
思考题:假如兔子长大到10个月就不再生小兔子了呢?假如兔子长到15个月就老死了呢?
```java
import java.util.ArrayList;
import java.util.List;
public class Rab {
//属性
private int age=1;
//生长方法
public void grow(){
this.age++;
}
//繁殖方法
public Rab product(){
if(age>2&&age<11){
return new Rab();
}else{
return null;
}
}
public static void main(String[] args) {
//创建一个笼子
List<Rab> cage = new ArrayList<Rab>(); //利用到了集合存放对象的引用 <泛型>
//创建一对兔子
Rab rabbit = new Rab();
//把兔子放进笼子
cage.add(rabbit);
//创建一个临时笼子放小兔子
List<Rab> cage1 = new ArrayList<Rab>();
//创建一个临时笼子放死兔子
List<Rab> cage2 = new ArrayList<Rab>();
//1到16月
for(int i=1;i<=16;i++){
//按月循环遍历集合里的对象
for(Rab rab:cage){
//定义一个临时变量接收繁殖方法的返回值
Rab temp=rab.product();
//判断是否有小兔子出生
if(temp!=null){
//把小兔子放进临时笼子里
cage1.add(temp);
temp.grow();
}
//把年龄大于15的放进临时笼子里
if(rab.age>15){
cage2.add(rab);
}
//年龄加一
rab.grow();
}
//
cage.addAll(cage1); //把每月新生兔子从cage1放进cage里
cage1.clear(); //cage1清空,等待接收下一个月的新生兔子
cage.removeAll(cage2); //把每月死了的兔子从cage里拿出
cage2.clear(); //cage2清空,等待接收下一个月的死兔子
System.out.println("第"+i+"个月有"+2*cage.size()+"只兔子");
}
}
}