读书人

母牛生母牛 用面向对象的思维实现这个

发布时间: 2012-12-21 12:03:49 作者: rapoo

母牛生母牛 用面向对象的思想实现这个算法
问题描述
==================
农场一头小母牛,每年生头小母牛,母牛五岁产母牛,二十年后有多少牛?

代码实现
==================

package com.cow.entity;/** * 母牛类 * @author Tanliwei */public class Cow {private int age;private boolean firtility;public Cow() {}public Cow(int age, boolean firtility) {this.age = age;this.firtility = firtility;}public int getAge() {return age;}public void setAge(int age) {this.age = age;// 大于五岁的牛可以进行生育if (!firtility && age >= 5) {this.setFirtility(true);}}public boolean isFirtility() {return firtility;}public void setFirtility(boolean firtility) {this.firtility = firtility;}}

package com.cow;import java.util.ArrayList;import java.util.List;import com.cow.entity.Cow;/** * 生产类 * @author Tanliwei */public class Producer {private int years = 20; // 生产年限private int amount; //牛的数量/** * 母牛进行繁殖 */public List produce(){List<Cow> cows = new ArrayList<Cow>();//初始化 农场有一头可以生育的母牛cows.add(new Cow(5,true));amount += 1;for(int i = 0; i < years; ++i){pastAYear(cows);}return cows;}/** * 一年以后的母牛群 * @param cows * @return */public List<Cow> pastAYear(List<Cow> cows){Cow calf;//新生小牛Cow term;//一群母牛中的一只int currentAmount = cows.size();//当前母牛的数量for(int i = 0; i < currentAmount; ++i){//母牛成长、生育,不包括新生的小牛term = cows.get(i);//这头母牛可以生育if(term.isFirtility()){calf = new Cow(1,false);cows.add(calf);amount += 1;}//母牛的年龄加一term.setAge(term.getAge()+1);}return cows;}public int getAmount() {return amount;}public void setAmount(int amount) {this.amount = amount;}public int getYears() {return years;}public void setYears(int years) {this.years = years;}}

package com.cow;import java.util.List;import com.cow.entity.Cow;/** * @author Tanliwei  */public class TestClass {public static void main(String[] args) {Producer producer = new Producer();List<Cow> cows = producer.produce();System.out.println("母牛总数:" + producer.getAmount());}}

读书人网 >编程

热点推荐