嗨,我无法理解为什么这不起作用
if(Long.parseLong(morse) == 4545454545){
System.out.println("2");
}
莫尔斯只是一串数字。问题是它说整数太大:4545454545,但我敢肯定 Long 可以比这长得多。
嗨,我无法理解为什么这不起作用
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:
如果整数文字以 ASCII 字母 L 或 l (ell)为后缀,则其为 long 类型;否则它是 int 类型(§4.2.1)。
如果您的整数值大于2147483647
,就像您的文字一样,那么您需要使用长文字:
4545454545L
...注意L
最后的,这是 long 和 int 文字之间的区别。小写l
也可以,但可读性较差,因为它很容易与 1 混淆(当您处理数字时,这不是一件好事!)
您需要使用4545454545L
或 4545454545l
限定它。