嗨,我无法理解为什么这不起作用
if(Long.parseLong(morse) == 4545454545){
System.out.println("2");
}
莫尔斯只是一串数字。问题是它表示整数太大:4545454545,但我确定Long可以比这长得多。
答案 0 :(得分:15)
您需要使用4545454545l
或4545454545L
将其限定为long
。默认情况下,4545454545
是int
字面值,4545454545
超出int
范围。
建议使用大写字母L
以避免混淆,因为l
和1
看起来很相似
你可以这样做:
if(Long.valueOf(4545454545l).equals(Long.parseLong(morse)) ){
System.out.println("2");
}
OR
if(Long.parseLong(morse) == 4545454545l){
System.out.println("2");
}
根据JLS 3.10.1:
如果整数文字后缀为 ASCII字母L或l(ell),则整数文字的长度为long;否则它的类型为int(§4.2.1)。
答案 1 :(得分:3)
如果您的整数值大于2147483647
,那么您需要使用长文字:
4545454545L
...注意最后的L
,这是long和int文字之间的区别。小写l
也可以工作,但是它的可读性较差,因为它很容易与1混淆(当你处理数字时不是很好!)
答案 2 :(得分:0)
您需要使用4545454545L
或4545454545l
来限定它。