可能是因为他们的输入中有一个前导零。
这运行良好:
public class DecodeLong
{
public static final void main(String[] params)
{
long l;
l = Long.decode("37648");
System.out.println("l = " + l);
}
}
但是如果你改变这个:
l = Long.decode("37648");
对此:
l = Long.decode("037648");
…它变为无效的八进制,异常来自
Long.parseLong
不包括前导零位
:
Exception in thread "main" java.lang.NumberFormatException: For input string: "37648"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Long.parseLong(Unknown Source)
at java.lang.Long.valueOf(Unknown Source)
at java.lang.Long.decode(Unknown Source)
at DecodeLong.main(DecodeLong.java:24)
不包括它,因为
decode
电话
parseLong
没有零,但基数设置为8。
谈论隐晦。:-)因此,如果通过显示
实际的
输入,你可能会发现它是沿着这些线的东西。