程序设计题:
农场一头小母牛,
每年生头小母牛,
母牛五岁产母牛,
二十年上多少牛?
假设农场只有母牛,母牛只生母牛,母牛20岁时也能生母牛,在外面借公牛交配。用面向对象编程的方式!其它的不说了,直接源码!
-------------------------------------------------------------------
/**
* 牛的公母,枚举
* @author 作者: FanWenBing E-mail: fwbice@126.com
* @version 创建时间:2011-12-20 下午10:45:01
*/
public enum Sex {
Female, Male
}
--------------------------------------------------------------------
/**
* 牛
* @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() + "头牛");
}
}