题目展示:古典问题:有一对兔子,从出生后第 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新人的运用目前所学知识进行的程序设计,如果有更简易的方法或是其他知识点,欢迎友好交流!