数牛面向对象解析

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值