程序设计题:农场一头小母牛_每年生头小母牛_面对象!



程序设计题:

 

农场一头小母牛,

每年生头小母牛,

母牛五岁产母牛,

二十年上多少牛?

 

假设农场只有母牛,母牛只生母牛,母牛20岁时也能生母牛,在外面借公牛交配。用面向对象编程的方式!其它的不说了,直接源码!

 

-------------------------------------------------------------------

/**

 * 牛的公母,枚举

 * @author 作者: FanWenBing  E-mail: fwbice@126.com

 * @version 创建时间:2011-12-20  下午10:45:01

 */

public enum Sex {

FemaleMale

}

 

--------------------------------------------------------------------

/**

 * 

 * @author 作者: FanWenBing  E-mail: fwbice@126.com

 * @version 创建时间:2011-12-20  下午10:42:39

 */

public class Cattle {

 

/**

 * 生产的年龄

 */

public static final int NEW_AGE = 5;

private static int SPED = 1;

private int id = 0; //牛的ID

private Sex sex = null;//牛是公母

private int age = 0;//年龄

public int getAge() {

return age;

}

public int getId() {

return id;

}

public void setAge(int age) {

this.age = age;

}

 

public Cattle(Sex sex, int age) {

this.sex = sex;

this.age = age;

id = SPED ++ ;

}

/**

 * 生产牛

 * @return 

 */

public Cattle production(){

if(age >= NEW_AGE && sex == Sex.Female){

return new Cattle(Sex.Female,0);

}

return null;

}

 

}

-------------------------------------------------------------

 

import java.util.ArrayList;

import java.util.List;

 

/**

 * 农场

 * @author 作者: FanWenBing  E-mail: fwbice@126.com

 * @version 创建时间:2011-12-20  下午10:42:03

 */

public class Farm {

/**

 * 农场年龄

 */

private int age = 0;

/**

 * 牛集合

 */

private List<Cattle> cattles = new ArrayList<Cattle>();

public Farm() {

add(new Cattle(Sex.Female,0));

}

public void add(Cattle c){

cattles.add(c);

}

public int getAge() {

return age;

}

 

/**

 * 农场增加年龄

 * @param 要增加多少年

 */

public void addYear(int year){

for(int i=0; i<year; i++){

List<Cattle> cattlesNew = new ArrayList<Cattle>();

System.out.println();

age ++;

System.out.println("第" + age + "年:");

for(int j=0; j<cattles.size(); j++){

Cattle c = cattles.get(j);

c.setAge(c.getAge() + 1);

if( c.getAge() >= Cattle.NEW_AGE ){

cattlesNew.add(c.production());

   System.out.println(c.getId() +"号牛生了小牛");

}

}

cattles.addAll(cattlesNew);

System.out.println("今年增加了" + cattlesNew.size() + "头牛,现在有"+ cattles.size() + "头牛");

}

}

/**

 * 取得农场里有多少头牛

 * @return 牛的头数

 */

public int getCattleCount(){

return cattles.size();

}

}

 

----------------------------------------------------

 

/**

 * 测试

 * @author 作者: FanWenBing  E-mail: fwbice@126.com

 * @version 创建时间:2011-12-20  下午10:58:25

 */

public class Test {

 

public static void main(String[] args) {

Farm farm = new Farm();

farm.addYear(20);

System.out.println(farm.getAge() + "年后有" + farm.getCattleCount() + "头牛");

}

 

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值