农场有头大母牛,每年生头小母牛,小母牛五年后生小母牛,问20年后农场一共有多少头牛?(用面向对象的思想)

来源:互联网 发布:apache cxf 2.4 maven 编辑:程序博客网 时间:2024/04/24 01:11

  今天在网上看到一个面试题,自己也来试试看。

  先说说我的思路:

  首先,有一个农场对象,里面有奶牛,以及奶牛的数量;再者奶牛也是一个对象,其有年龄,以及生育能力,接下来就是动手编写代码

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;elsereturn 1;}private int age;}


原创粉丝点击