整数过大

嗨,我很难理解为什么这不起作用

if(Long.parseLong(morse) == 4545454545){ System.out.println("2"); } 

莫尔斯只是一串数字。 问题是它说Integer数字太大了:4545454545,但我确定Long可以比这长得多。

您需要使用4545454545l4545454545L来确定它的合格4545454545L 。 默认情况下, 4545454545int literal, 4545454545超出int范围。

建议使用大写字母L以避免混淆,因为l1看起来非常相似

你可以做 :

 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混淆(当你处理数字时不是很好!)

您需要使用4545454545L4545454545l来确定它的合格4545454545l