整数过大

Str*_*ife 4 java

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

if(Long.parseLong(morse) == 4545454545){
     System.out.println("2");
}
Run Code Online (Sandbox Code Playgroud)

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

NIN*_*OOP 17

您需要使用4545454545l4545454545L将其限定为long.默认情况下,4545454545是一个int文字,4545454545超出范围int.

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

你可以做 :

if(Long.valueOf(4545454545l).equals(Long.parseLong(morse)) ){
     System.out.println("2");
}
Run Code Online (Sandbox Code Playgroud)

要么

if(Long.parseLong(morse) == 4545454545l){
   System.out.println("2");
}
Run Code Online (Sandbox Code Playgroud)

根据JLS 3.10.1:

如果整数文字后缀为ASCII字母L或l(ell),则整数文字的长度为long ; 否则它的类型为int(§4.2.1).

  • 既然`parseLong()`返回一个原始long,就没有必要使用`.equals()` - `==`就可以了. (3认同)