嗨,我无法理解为什么这不起作用
if(Long.parseLong(morse) == 4545454545){
System.out.println("2");
}
莫尔斯只是一串数字。问题是它说整数太大:4545454545,但我敢肯定 Long 可以比这长得多。
嗨,我无法理解为什么这不起作用
if(Long.parseLong(morse) == 4545454545){
System.out.println("2");
}
莫尔斯只是一串数字。问题是它说整数太大:4545454545,但我敢肯定 Long 可以比这长得多。
您需要使用4545454545l或4545454545L将其限定为long. 默认 ,4545454545是一个int文字并且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 文字之间的区别。小写l也可以,但可读性较差,因为它很容易与 1 混淆(当您处理数字时,这不是一件好事!)
您需要使用4545454545L或 4545454545l限定它。