为了账号安全,请及时绑定邮箱和手机立即绑定

600851475143的“整数数太大”错误消息

600851475143的“整数数太大”错误消息

米脂 2019-09-24 16:29:43
public class Three {    public static void main(String[] args) {        Three obj = new Three();        obj.function(600851475143);    }    private Long function(long  i) {        Stack<Long> stack = new Stack<Long>();        for (long j = 2; j <= i; j++) {            if (i % j == 0) {                stack.push(j);            }        }        return stack.pop();    }}当上面的代码运行时,它会在line上产生错误obj.function(600851475143);。为什么?
查看完整描述

3 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超2个赞

600851475143不能表示为32位整数(类型int)。它可以表示为64位整数(类型long)。Java中的长文字以“ L”结尾:600851475143L


查看完整回答
反对 回复 2019-09-24
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

附加后缀L23423429L

默认情况下,java将所有数字文字解释为32位整数值。如果要明确指定此值大于32位整数,则应将后缀L用于长值。


查看完整回答
反对 回复 2019-09-24
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

您需要使用长文字:


obj.function(600851475143l);  // note the "l" at the end

但我希望该功能用完内存(或时间)...


查看完整回答
反对 回复 2019-09-24
  • 3 回答
  • 0 关注
  • 658 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信