一个简单的累加数据案例,看着好多版Java基础教程都在讲,我也试试!

案例需求:不死神兔?

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子, 假如兔子都不死,问第二十个月的兔子对数为多少?

备注

Ps:看Java基础看到的案例,很基础的东西,我好像不太会,所以不多说,盘它!

想法构思:

月份           1          2         3           4           5           6        7        8         9	...
兔子对数       1          1          2           3           5          8        13       21        34	...

从上面规律可以看出来,第三个月起就是简单的前两个月累加数据。恍然大悟,曾经学过的斐波那契数列?
不过好像已经忘得差不多了,百度一下!
在这里插入图片描述
泪流满面,16年初一的题目把我难住了,我对不起我以前的数学老师。
其实到这里,这个题目已经结束了,但是本着写blog划水的精神,上代码!

public class Rabbit {
    public static void main(String[] args) {
        int rabbitNumber[]=new int[20];
        rabbitNumber[0] = 1;
        rabbitNumber[1] = 1;
        for (int month =2;month< rabbitNumber.length;month++){
            rabbitNumber[month] = rabbitNumber[month-1] + rabbitNumber[month-2];
        }
        System.out.println(rabbitNumber[19]);
    }
}

加坑系列:

在撸代码的时候我犯了一个常识性问题,不多说先上代码。

//错误代码
public class Rabbit {
    public static void main(String[] args) {
        int rabbitNumber[]=new int[20];
        rabbitNumber[0] = 1;
        rabbitNumber[1] = 1;
        for (int month =2;month<= rabbitNumber.length;month++){
            rabbitNumber[month] = rabbitNumber[month-1] + rabbitNumber[month-2];
        }
        System.out.println(rabbitNumber[19]);
    }
}

很多时候都没感觉到有错,但是偏偏就错了。写完其实我没感觉到这个代码有问题,但是编译运行后显示数组越界。
在这里插入图片描述
其实这个问题一眼就可以看出来,但是侧面反映了我自身的一个问题,对于数组这块了解还不够清晰。
所以有事问百度,整理下数组的基础操作问题:

  1. 索引越界,ArrayIndexOutOfBoundsException,刚刚踩得雷,创建一个数组的大小为20的数组,其索引应该是0-19,但是定义循环变量month的时候就那么一丢丢丢的不小心,month冲上了20,产生索引越界,程序报错,感觉很丢脸,自己很伤心。
    ps:索引,通俗的说就是数组的代号,跟耳熟能详的007好像没啥区别。不过要注意的是索引是从0开始,如果创建数组大小为20,最大索引应该是19,这也是我踩坑的点。
  2. 空指针异常:访问的数组已经不再指向堆内存的数据,造成空指针异常。ps:这个坑以后碰到了再埋!

写了半天感觉没啥意思,上个blog post写的是键盘输入,这一版没道理不用,要不然觉得不得劲。安排!

需求升级:

不死神兔从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
现在有一个养殖场看中了不死神兔的潜力,但是不知道无法预计未来市场。
因此,他需要做一个养殖周期和引进种兔数量预案,来了解他可能获得的兔子数量,从而获得收益。
变量1:养殖场预计养殖周期,养殖场预计引进种兔数量。 结果:养殖场在养殖周期完成后能获得多少只兔子。

废话不多说,上代码。

public class Rabbit {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("养殖场预计养殖周期为几个月:");
        int month = scanner.nextInt();
        int rabbitNumber[]=new int[month];
        System.out.print("请输入养殖场预计引进多少只兔子:");
        rabbitNumber[0] = scanner.nextInt();
        rabbitNumber[1] = rabbitNumber[0];
        for (int i =2;i< rabbitNumber.length;i++){
            rabbitNumber[i] = rabbitNumber[i-1] + rabbitNumber[i-2];
        }
       System.out.println("养殖场在养殖周期过后可获得兔子数量:"+rabbitNumber[month-1]);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值