我有这个:
switch (account){
case 08120:
// Savings deposit interest rate
return null;
case 13100:
// Receivables contractual interest
return null;
case 16550:
// Default management process accounts payable
return null;
}
但编译器抱怨整数08120
太大了!
到底是怎么回事?
答案 0 :(得分:15)
首先要做的事情是:不太可能你偶然发现了一个Java错误。首先责怪你的代码。
08120
是Java中的八进制文字,因为它以前导零开头。
8不是有效的八进制数字(只有0到7)。
因此,您会收到编译错误,尽管有点误导。
答案 1 :(得分:2)
这不是java bug。
您不能将 0XXXXX 的格式用于十进制数字。十进制数应以非零数字开头。
使用 8120 代替 08120
答案 2 :(得分:1)
以0
开头的数字被解释为八进制数,8也不适合,因为有效的八进制数字可以是0到7.这不是错误,尝试在没有{的情况下开始你的数字{1}}。
答案 3 :(得分:1)
这是一个有点误导/含糊的错误信息。在您的代码中:
case 08120:
// Savings deposit interest rate
return null;
您使用了08120
,它被解释为八进制文字而不是十进制一个。由于您的下一个数字是8
(不在0 - 7
之间),因此它是无效/超出范围的八进制字面值,因此编译错误。