整数过大
嗨,我很难理解为什么这不起作用
if(Long.parseLong(morse) == 4545454545){ System.out.println("2"); }
莫尔斯只是一串数字。 问题是它说Integer数字太大了:4545454545,但我确定Long可以比这长得多。
您需要使用4545454545l
或4545454545L
来确定它的合格4545454545L
。 默认情况下, 4545454545
是int
literal, 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 literal之间的差异。 小写l
适用,但是它的可读性较差,因为它很容易与1混淆(当你处理数字时不是很好!)
您需要使用4545454545L
或4545454545l
来确定它的合格4545454545l
。