4

嗨,我无法理解为什么这不起作用

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

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

4

3 回答 3

17

您需要使用4545454545l4545454545L将其限定为long. 默认 ,4545454545是一个int文字并且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)。

于 2013-07-13T18:16:56.517 回答
4

如果您的整数值大于2147483647,就像您的文字一样,那么您需要使用长文字:

4545454545L

...注意L最后的,这是 long 和 int 文字之间的区别。小写l也可以,但可读性较差,因为它很容易与 1 混淆(当您处理数字时,这不是一件好事!)

于 2013-07-13T18:18:42.650 回答
2

您需要使用4545454545L4545454545l限定它。

于 2013-07-13T18:17:52.777 回答