"Integer too large"用于较小的编译时常量



>我有这个:

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之间),因此它是一个无效/超出范围的八进制文字,因此是编译器错误。

最新更新