今天在网上看到一个面试题,自己也来试试看。
先说说我的思路:
首先,有一个农场对象,里面有奶牛,以及奶牛的数量;再者奶牛也是一个对象,其有年龄,以及生育能力,接下来就是动手编写代码
import java.util.ArrayList;
import java.util.*;
/**
*@version 2013-10-15
*@author hao
**/
public class FarmTest
{
public static void main(String[] args)
{
Farm farm=new Farm();
System.out.println("Please enter the year:");
Scanner in=new Scanner(System.in);
int year=in.nextInt();
farm.setNum(year);
int sum=farm.getNum();
System.out.println(sum);
}
}
/**
*A farm with a cow and the cow is 5 years old.
**/
class Farm
{
public Farm(){
num=1;
cows=new ArrayList<Cow>();
Cow cow=new Cow();
cow.setAge(5);
cows.add(cow);
}
//Set the number of cows in the farm.
public void setNum(int year){
ArrayList<Cow> children = new ArrayList<Cow>();
for(int i=year;i>0;i--){
for(Cow cow:cows){
cow.grow();
if(cow.generation()==1){
num++;
Cow child=new Cow();
children.add(child);
}
}
cows.addAll(children);
children.clear();
}
}
//Get the number of cows in the farm.
public int getNum(){
return num;
}
private ArrayList<Cow> cows;
private int num;
}
/**
*A cow is 0 years old.
**/
class Cow
{
public Cow(){
this.age=0;
}
//Set the cow's age.
public void setAge(int age){
this.age=age;
}
//Get the cow's age.
public int getAge(){
return this.age;
}
//The cow has one year.
public void grow(){
this.age++;
}
//The cow with 5 years old can calve.
public int generation(){
if(this.age<5)
return 0;
else
return 1;
}
private int age;
}