数牛面向对象解析
来源:互联网 发布:淘宝买台式电脑靠谱吗 编辑:程序博客网 时间: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;
}
}
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
- 数牛面向对象解析
- 面向对象概念解析
- [php] 面向对象解析
- 面向对象思想解析
- Java面向对象的解析
- 面向对象解析(一)
- PHP面向对象笔记解析
- 面向对象六大原则解析
- 面向对象的内存解析
- 编程基础-面向对象-基于模板的面向对象解析
- 数3退1(面向对象思想)
- Thunk 回调函数实现面向对象
- 数猴子小程序(面向对象版)
- 回调函数的面向对象改造
- 回调函数的面向对象设计
- 一个面向对象的命令行解析器
- JS面向对象问题初步解析
- 贪吃蛇源码解析(面向对象)
- Leetcode【42】:Multiply Strings
- 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)
- 黑马程序员23——OC之内存管理(set方法的内存管理)
- C#操作XML小结
- 避免误用 Redis
- 数牛面向对象解析
- ios开发常见考题-最全版本
- 程序员生存定律-六个程序员的故事(2)
- 微信开发模式无法验证以及返回消息中文乱码的情况
- Google无法访问
- 程序员生存定律-六个程序员的故事(3)
- 用AngularJS写2048游戏(二)
- 哲学家进餐问题
- ( 六 )Seafile FUSE 虚拟文件系统开发---写接口实现思路