This question already has answers here:
What is an integer overflow error?
                            
                                (9个答案)
                            
                    
                2年前关闭。
        

    

这个任务很经典:考虑每个成熟的母猪会给三对幼兔,计算30个月后的兔对数量。
代码如下:

    int young = 1;
    int mature = 0;
    for(int n=2; n<=31; n++)
    {
        int take_away=young;
        young=3*mature;
        mature=mature+take_away;
        System.out.println("month:"+n+"\t"+"mature\t"+mature+"\t"+"young\t"+young+"\n");
        if(n==31)System.out.println(mature+take_away);
    }


这是问题所在:

最初,一切都很好:

月:2成熟1年轻0

月:3成熟1年轻3

月:4成熟4年轻3

月:5成熟7年轻12

从第28个月开始的输出如下:

月:28成熟1674257764年轻-2113786333

减号从哪里来?

最佳答案

您使用int,并且新数字大于Integer.MAX_VALUE。请改用long

10-07 16:59