今天在网上看到一个面试题,自己也来试试看。
先说说我的思路:
首先,有一个农场对象,里面有奶牛,以及奶牛的数量;再者奶牛也是一个对象,其有年龄,以及生育能力,接下来就是动手编写代码
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; }