数牛面向对象解析
2014-09-03 21:58
190 查看
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;
}
}
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;
}
}
相关文章推荐
- 编程基础-面向对象-基于模板的面向对象解析
- 解析三层架构(3)---三层架构中的实体类和面向对象
- 面向对象程序设计与面向过程程序设计解析
- 面向对象思想解析
- 面向对象程序设计与面向过程程序设计解析
- VC面向对象开发分析与设计实例解析
- 深入java面向对象四:Java 内部类种类及使用解析(转)
- 深入java面向对象四:Java 内部类种类及使用解析(转)
- javascript面向对象包装类Class的类库解析
- 解析JavaScript面向对象概念中的Object类型与作用域
- 面向对象概念解析
- 面向对象程序设计与面向过程程序设计解析
- ExtJs4.0面向对象入门级别类的定义和对象的生成解析
- VC面向对象开发分析与设计实例解析
- JAVA笔记2-面向对象与内存解析
- java面向对象下:JavaXML解析技术
- Swift 面向对象解析(一)
- java面向对象内存解析
- 24_面向对象程序设计(原型【七】深入解析原型继承的概念
- 面向对象解析prototype(模型)