题目展示:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
一、第一种情况:只算十二个月。
/*题目分析:斐波那契数列具体为:1,1,2,3,5,8,13,...。 显而易见,从第三个月开始,当月的兔子总数为邻近的前两个月之和; */ public class java1{ public static void main (String[] args){ //不要忘记main方法 int a1=1; int a2=2; System.out.println("1月的兔子总数为:"+a1); System.out.println("2月的兔子总数为:"+a2); //题目要求输出每个月(共十二个月)的兔子总数,此处为一月二月的情况 for(int i=3;i<=12;i++){ //记得给i定义一个数据类型 int a3=a1+a2; a1=a2; a2=a3; System.out.println(i+"月的兔子总数为:"+a3); } //利用for循环输出从三月份到十二月的每个月的兔子总数 } }
下面进行程序在eclipse中的书写以及结果展示:
二、由用户输入查看某月份(可大于十二)时兔子总数
import java.util.*; //调用java.util.*以用于用户数据输入 public class java1{ public static void main(String[] args){ System.out.println("请输入月份"); Scanner z=new Scanner(System.in); //定义z作为用户输入的参数 int a=z.nextInt(); //把用户输入的数字赋给a int a1=1; int a2=1; if(a<=0) System.out.println("月份需大于零。"); if(a==1) System.out.println("1月份兔子总数为:"+a1); if(a==2) System.out.println("2月份兔子总数为:"+a2); if(a>=3){ for(int i=3;i<=a;i++){ int a3=a1+a2; a1=a2; a2=a3; System.out.println(a+"月份兔子总数为:"+a3); } } } } /*此处存在一个问题,在输出大于等于3的月份n兔子总数时,会出现n-2次输出 结果暂时没有想到解决方案,等解决了在来*/ /*此处犯了一个错误,同时也是忘记了一个知识点,for循环里定义的变量只能 在for循环中使用,于是此处只需要把变量a3定义在for循环之外,再将输出语 句也书写在for循环外即可*/
import java.util.*; //调用java.util.*以用于用户数据输入 public class java1{ public static void main(String[] args){ System.out.println("请输入月份"); Scanner z=new Scanner(System.in); //定义z作为用户输入的参数 int a=z.nextInt(); //把用户输入的数字赋给a int a1=1; int a2=1; int a3=3; if(a<=0) System.out.println("月份需大于零。"); if(a==1) System.out.println("1月份兔子总数为:"+a1); if(a==2) System.out.println("2月份兔子总数为:"+a2); if(a>=3){ for(int i=3;i<=a;i++){ a3=a1+a2; a1=a2; a2=a3; } System.out.println(a+"月份兔子总数为:"+a3); } } }
程序试运行成功,结果也正确,读者可以自己检验。
此处是java新人的运用目前所学知识进行的程序设计,如果有更简易的方法或是其他知识点,欢迎友好交流!