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)
;。为什么?
600851475143
不能表示为32位整数(类型int
)。可以将其表示为64位整数(类型long
)。Java中的长文字以“ L”结尾:600851475143L
问题内容: 嗨,我很难理解为什么这不起作用 莫尔斯电码只是一串数字。问题是它说Integer number太大:4545454545,但是我确定Long可以更长。 问题答案: 您需要使用或将其限定为。默认情况下,是文字,超出的范围。 建议使用大写字母以避免混淆,因为和看起来很相似 你可以做 : 要么 根据JLS 3.10.1 : 如果整数文字 以ASCII字母L或l(ell) 为后缀,则其类型为l
问题内容: 但是,如果用前导零检查Integer,则会发现问题是在jdk7发行之前进行的,因此其研究工作量较小。但是在jdk7中,对整数进行了一些更改和添加。以下是有关jdk7的最新答案。 我有一个代码: 编译时出现错误:整数太大:09 为什么这样做呢? 同样,如果我将代码更改为: 现在输出是10 为什么给输出10而不是12? 问题答案: 开头的数字被认为是八 - 9不是一个八进制数字(但(传统)
BigQuery->ParDo->BigQuery 该表有~2B行,不到1TB。 运行了8个多小时后,作业失败,出现以下错误: 作业id为:2015-05-18_21_04_28-9907828662358367047 此外,即使作业失败,它仍然在图表上显示为成功。为什么?
问题内容: 我最近尝试使用sftp访问我的linux机器,在那里我实现了自己的简单外壳。并且我设置了除root用户以外的其他用户默认使用我的shell(通过编辑/ etc / passwd文件)。然后问题出现了,一旦我尝试通过sftp访问,我将收到一条消息:“接收的消息太长:”,我搜索了解决方案,一种解决方案是将该用户的默认shell改回普通的bash shell。我试过了,而且奏效了,问题在于,
问题内容: 我有一个单元测试,其中我静态定义了一个很大的字节数组(超过8000个字节)作为我每次运行单元测试时都不希望读取的文件的字节数据。 这在Eclipse中可以正常编译,但是通过Ant脚本进行编译时,出现以下错误: 任何想法为何以及如何避免这种情况? 答案 :Shimi的答案成功了。我将字节数组移到一个单独的类中,并且编译良好。谢谢! 问题答案: Java中的方法在字节码中限制为64k。静态
问题内容: 为什么在将long分配给min和max的地方得到的int数太大? 问题答案: 默认情况下,java中的所有文字数字均为,范围为 包含在内。 您的文字超出了此范围,因此要进行编译,您需要指出它们是文字(即带有的后缀): 请注意,java同时支持大写和小写,但我建议 不要 使用小写,因为它看起来像: 相同的Java语言规范 如果以ASCII字母L或l(ell)为后缀,则整数文字的类型为lo