>我有这个:
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
太大了!
这到底是怎么回事?
首先要做的是:你不太可能偶然发现Java错误。首先责怪你的代码。
08120
是 Java 中的八进制文字,因为它以前导零开头。
8 不是有效的八进制数字(只有 0 到 7 是)。
因此,您会收到编译错误,尽管有点误导。
这不是一个Java错误。
不能将 0XXXXX 的格式用于十进制数字。十进制数应以非零数字开头。
使用 8120 而不是 08120
以0
开头的数字被解释为八进制数字,8 也不适合在那里,因为有效的八进制数字可以是 0 到 7。这不是错误,请尝试在没有0
的情况下开始您的号码。
这是一个有点误导/神秘的错误消息。在您的代码中:
case 08120:
// Savings deposit interest rate
return null;
您使用了 08120
,它被解释为八进制文字而不是十进制文字。由于您的下一个数字是8
(不在0 - 7
之间),因此它是一个无效/超出范围的八进制文字,因此是编译器错误。