首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

标题-牛生牛-面向对象

2012-10-07 
题目---牛生牛---面向对象农场一头小母牛,每年生头小母牛。母牛五岁产母牛,二十年上多少牛?/** * 一群牛的

题目---牛生牛---面向对象

农场一头小母牛,每年生头小母牛。母牛五岁产母牛,二十年上多少牛?/** * 一群牛的故事 */import java.util.ArrayList;import java.util.List;/** * 母牛 * @author dinghun8leech */class Cow {    /** age 年龄 */    private int age;    /**     * 默认构造方法,创建(生产)一头年龄为1岁的小母牛     */    public Cow() {        age = 1;    }    /**     * 成长,母牛年龄+1     */    public void grow() {        age++;    }    /**     * 生产,当母牛年龄在5岁或以上时产生1头小母牛     * 年龄低于5岁时无法生产,返回null     * @return Cow 一头年龄为1岁的小母牛     */    public Cow produce() {        if (age > 4) {            return new Cow();        }        return null;    }}/** * 怪兽牧场 * @author dinghun8leech */public class Farm {    public static void main(String [] args) {        int year = 20;//测试年限        int init_cow_count = 1;//牧场起始小母牛数量        List<Cow> cows = new ArrayList<Cow>();//牛棚        for (int i=0;i<init_cow_count;i++) {            cows.add(new Cow());        }        for (int i=0;i<year;i++) {            int cow_count = cows.size();            for (int j=0;j<cow_count;j++) {//每年都遍历一下牛棚中的所有牛                Cow cow = cows.get(j);                Cow newCow = cow.produce();                if (newCow != null) {//看看当前年龄能否生产小牛                    cows.add(newCow);  //这里的编程技巧,cows是扩充的,用一个变量来控制下标                }                cow.grow();//每年都会成长            }        }        System.out.println("怪兽牧场"+year+"后的母牛数从"+init_cow_count+"头增长到"+cows.size()+"头。");    }}//下面用递归方法,变成纯算法问题。。。。



热点排行