Java小白被一对兔子难住了,求大神帮忙

未闻花茗 2016-03-04 09:42:32
题目:有一对兔子,从出生第三个月起每个月都生一对兔子,小兔子长到第三个月后,每个月又生一对兔子,假如兔子都不死,问 i 个月时兔子的数量
自己做了以后关键代码如下:
long sum;
long s1=1;
long s2=1;
Scanner scan = new Scanner(System.in);
try{
System.out.println("请输入月份:");
int count = scan.nextInt();
for(int i = 1;i <= count;i++){
if(i == 1){
System.out.println("第"+ i +"个月有"+ s1 +"对兔子。");
continue;
}else if(i == 2){
System.out.println("第"+ i +"个月有"+ s2 +"对兔子。");
continue;
}else{
sum = s2;
s2 = s1 + s2; //斐波那契数列
s1 = sum;

System.out.println("第"+ i +"个月兔子的总数为"+ s2 +"对");
}
}
}
运行结果:
请输入月份:
5
第1个月有1对兔子。
第2个月有1对兔子。
第3个月兔子的总数为2对
第4个月兔子的总数为3对
第5个月兔子的总数为5对
这里我输入的月份是5,它从1到5的月份都给打印出来了,求教大神,有没有什么方法只打印输入那个月份的兔子数,前面几个月的不打印?
...全文
193 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
未闻花茗 2016-03-05
  • 打赏
  • 举报
回复
引用 2 楼 Z_CHENG_XIAO 的回复:

		long sum;
		long s1=1;
		long s2=1;
		Scanner scan=new Scanner(System.in);
		
			System.out.println("请输入月份:");
			int count=scan.nextInt();
			if(count<3)
			{
				System.out.println("第"+count+"个月有"+s1+"对兔子");
			}
			else
			{
				for(int i=3;i<=count;i++)
				{
					sum=s2;
					s2=s1+s2;
					s1=sum;	
				}
				System.out.println("第"+count+"个月有"+s2+"对兔子");
			}
引用 2 楼 Z_CHENG_XIAO 的回复:

		long sum;
		long s1=1;
		long s2=1;
		Scanner scan=new Scanner(System.in);
		
			System.out.println("请输入月份:");
			int count=scan.nextInt();
			if(count<3)
			{
				System.out.println("第"+count+"个月有"+s1+"对兔子");
			}
			else
			{
				for(int i=3;i<=count;i++)
				{
					sum=s2;
					s2=s1+s2;
					s1=sum;	
				}
				System.out.println("第"+count+"个月有"+s2+"对兔子");
			}
谢谢,从来没想过要换一种思路来写if else,涨知识了
  • 打赏
  • 举报
回复
package com.rabbit; import java.util.Scanner; /* 需求:输入一个时间,计算出一共有多少兔子 分析:初始有2个兔子,第三个月起每一个月生一对,小兔子第三个月起每个月又生出一对兔子。 单位:对 当月出生兔子对数 兔子总对数 第一个月: 1 1 第二个月: 第三个月: 1 2 第四个月: 1 3 第五个月: 2 5 5 第六个月: 3 8 第七个月: 5 13 ... 结果:第i个月的兔子对数总和S(i)=S(i-1)+S(i-2),符合菲波那切数列。 */ public class rabbit{ public static void main(String[] args){ Scanner sc =new Scanner(System.in); rabbit r =new rabbit(); System.out.println("现在是第几个月?"); int i = sc.nextInt(); int s =2*r.countRabbit(i); System.out.println("现在是第"+i+"个月,"+"一共有兔子数量:"+s+"只。"); } public int countRabbit(int i){ if(i==1){ return 1;} else if(i==2){ return 1; }else{ return countRabbit(i-1)+countRabbit(i-2); } } }
李大白白 2016-03-04
  • 打赏
  • 举报
回复
package aaa;

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		long sum;
		long s1 = 1;
		long s2 = 1;
		int i;
		Scanner scan = new Scanner(System.in);
		try {
			System.out.println("请输入月份:");
			int count = scan.nextInt();
			for (i = 1; i <= count; i++) {
				if (1 == count) {
					System.out.println("第" + i + "个月有" + s1 + "对兔子。");
					break;
				} else if (2 == count) {
					System.out.println("第" + i + "个月有" + s2 + "对兔子。");
					break;
				} else {
					sum = s2;
					s2 = s1 + s2; // 斐波那契数列
					s1 = sum;
				}
			}
			System.out.println("第" + i + "个月兔子的总数为" + s2 + "对");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
顺便为1下为何你要用try/catch呢?
AnonyStar 2016-03-04
  • 打赏
  • 举报
回复

		long sum;
		long s1=1;
		long s2=1;
		Scanner scan=new Scanner(System.in);
		
			System.out.println("请输入月份:");
			int count=scan.nextInt();
			if(count<3)
			{
				System.out.println("第"+count+"个月有"+s1+"对兔子");
			}
			else
			{
				for(int i=3;i<=count;i++)
				{
					sum=s2;
					s2=s1+s2;
					s1=sum;	
				}
				System.out.println("第"+count+"个月有"+s2+"对兔子");
			}
  • 打赏
  • 举报
回复
你不说的话我还没发现这是斐波那契

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧