数牛面向对象解析

来源:互联网 发布:淘宝买台式电脑靠谱吗 编辑:程序博客网 时间:2024/05/22 15:59
package zhu;


import java.util.concurrent.CopyOnWriteArrayList;


public class Test1 {


/**
* 农家一头小母牛
* 每年生头小母牛
* 母牛五岁产母牛
* 二十年上多少牛
*/
public static void main(String[] args) {
LargeCows  lacows= new LargeCows(0);
LitteCows licows  = new LitteCows(1);
licows.addCow(new LitteCow(0));
for(int i=1;i<21;i++)
{
//先将每个小牛的time加1,再看是否满5
CopyOnWriteArrayList<LitteCow> liCows2 = new CopyOnWriteArrayList<LitteCow>();
for(int z=0;z<licows.getLiCows().size();z++)
{
LitteCow lcow = licows.getLiCows().get(z);
lcow.setTime(lcow.getTime()+1);
//小牛 time满5则先大牛类的num加一 再 移除小牛集合对应小牛
if (lcow.getTime()>4)
{
lacows.setNum(lacows.getNum()+1);
// licows.getLiCows().remove();//最好不要在遍历集合时删除集合里的元素,因为可能遍历不到那个元素
liCows2.add(lcow);
}
}
//删除
licows.getLiCows().removeAll(liCows2);
//通过大牛类 计算出生小牛数目  再放入小牛集合类
int j=lacows.getNum();
while(j>0)
{
licows.addCow(new LitteCow(0));
--j;
}
int Count2=lacows.getNum()+licows.getLiCows().size();
System.out.println(i+"年后牛总数:"+Count2+"小牛:"+licows.getLiCows().size()+",大牛"+lacows.getNum());
}

}
}
class LitteCows{
private int num;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
private CopyOnWriteArrayList<LitteCow> liCows = new CopyOnWriteArrayList<LitteCow>();
public CopyOnWriteArrayList<LitteCow> getLiCows() {
return liCows;
}
public void setLiCows(CopyOnWriteArrayList<LitteCow> liCows) {
this.liCows = liCows;
}
public void addCow(LitteCow lcow)
{
liCows.add(lcow);
}
public void delCow(LitteCow lcow)
{
liCows.remove(lcow);
}
public LitteCows(int num) {
this.num = num;
}
}
class LitteCow{
private int time;

public LitteCow(int time) {
this.time = time;
}


public int getTime() {
return time;
}


public void setTime(int time) {
this.time = time;
}
}
class LargeCows{
private int num;
public LargeCows(int num) {
super();
this.num = num;
}


public int getNum() {
return num;
}


public void setNum(int num) {
this.num = num;
}
}
0 0
原创粉丝点击