<分区>
嗨,我无法理解为什么这不起作用
if(Long.parseLong(morse) == 4545454545){
System.out.println("2");
}
莫尔斯只是一串数字。问题是它说整数太大:4545454545,但我确信 Long 可以比这长得多。
标签 java
<分区>
嗨,我无法理解为什么这不起作用
if(Long.parseLong(morse) == 4545454545){
System.out.println("2");
}
莫尔斯只是一串数字。问题是它说整数太大:4545454545,但我确信 Long 可以比这长得多。
最佳答案
您需要使用 4545454545l
或 4545454545L
将其限定为 long
。默认情况下,4545454545
是一个 int
字面值,而 4545454545
超出了 int
的范围。
建议使用大写字母 L
以避免混淆,因为 l
和 1
看起来很相似
你可以这样做:
if(Long.valueOf(4545454545l).equals(Long.parseLong(morse)) ){
System.out.println("2");
}
或
if(Long.parseLong(morse) == 4545454545l){
System.out.println("2");
}
根据 JLS 3.10.1 :
An integer literal is of type long if it is suffixed with an ASCII letter L or l (ell); otherwise it is of type int (§4.2.1).
关于java - 整数太大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17632914/