java - 为什么输出中有负数?
问题描述
该任务是经典的:计算 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
。
推荐阅读
- bash - 如何在 unix 脚本中提取文件名的一部分并检查它是否存在
- javascript - 使用
标签为什么这里的监督变得如此琐碎,自以为是,肛门,无情和被动攻击?这是一个代码论坛。顺便说一句 -1
- swift - 将 UIBezierPath 转换为 PKStrokePath swift
- java - (不是 Recuisive)在 android java 中获取列表文件类型
- c# - FileSystemWatcher:将多个过滤器事件聚合成一个?
- python - Seaborn regplot:IndexError:数组索引过多
- java - Spring - 测试多线程问题
- c - 提高无损音频编码算法中位复制的速度(用 C 编写)
- mysql - 嘿!我无法使用 NodeJS 将 html 表单数据插入 MySQL 数据库
- google-analytics - 谷歌分析:关于点击和会话差异的 AdWords 提醒