Rabbit.java package main;//构建一个兔子的对象public class Rabbit {//记录生日int brithday=1;public Rabbit(int brithday){this.brithday=brithday;}//根据兔子的月数判断是否可以生小兔子public boolean bear(int month)
package main; //构建一个兔子的对象 public class Rabbit { //记录生日 int brithday=1; public Rabbit(int brithday){ this.brithday=brithday; } //根据兔子的月数判断是否可以生小兔子 public boolean bear(int month) { if((month-brithday)>=2){ return true; } else return false; } }RabbitCamp.java
package main; import java.util.ArrayList; import java.util.Iterator; import java.util.List; //兔子活动类 public class RabbitCamp { ListMain.javarabbitList; public RabbitCamp(){ init(); } public void init(){ rabbitList=new ArrayList (); rabbitList.add(new Rabbit(1));//一月的那一对兔子 } //兔子繁殖 public int Camp(int month){ int m=0; for(m=1;m<=month;m++){ Iterator it = rabbitList.iterator(); //创建一个兔子队列的迭代器 List newRabbit = new ArrayList (); //创建一个新的兔子队列,表示出生的小兔子 while(it.hasNext()){ Rabbit rabbit=(Rabbit)it.next(); if(rabbit.bear(m)){ newRabbit.add(new Rabbit(m)); } } rabbitList.addAll(newRabbit); } return rabbitList.size(); } }
package main; import java.util.Scanner; /*题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子, * 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? * 程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... */ //规律 1 1 2 3 5 8 13 21 34 55 89 144 public class Main{ public static void main(String[] args){ int rabbitNum=1; String[] a = null; RabbitCamp rabbitCamp=new RabbitCamp(); Scanner sc=new Scanner(System.in); System.out.println("输入月份(1-12):"); int num=sc.nextInt(); if(num>=1&&num<=12){ rabbitNum=rabbitCamp.Camp(num); System.out.println("第"+num+"个月共有"+rabbitNum+"对兔子"); }else { System.out.println("请输入1-12月份"); main(a); } } }