10

我正在尝试编写以下代码。但它给了我错误,请帮助我。

    int six=06;
    int seven=07;
    int abc=018;
    int nine=011;
    System.out.println("Octal 011 ="+nine);
    System.out.println("octal O18 =" + abc);

为什么我不能给变量 018 和 019。我可以给变量值 020 和 021。为什么会这样?这背后的原因是什么请告诉我。
我收到以下错误

            integer number too large: 018
            int eight=018;
4

9 回答 9

34

八进制是以 8 为基数的数字系统,所以这意味着数字可以从 0 到 7,在八进制数字系统中不能使用数字 8(和 9)。

于 2013-05-08T06:14:00.170 回答
27
// Decimal declaration and possible chars are [0-9]
int decimal    =  495;        

// HexaDecimal declaration starts with 0X or 0x and possible chars are [0-9A-Fa-f]
int hexa       =  0X1EF; 

// Octal declaration starts with 0 and possible chars are [0-7] 
int octal      =  0757;  

// Binary representation starts with 0B or 0b and possible chars are [0-1]  
int binary     =  0b111101111; 

如果数字是字符串格式,那么您可以使用以下方法将其转换为 int

String text = "0b111101111";
int value = text.toLowerCase().startsWith("0b") ? Integer.parseInt(text.substring(2), 2)
                                  : Integer.decode(text);
于 2015-12-21T10:15:05.730 回答
23

为什么我不能给变量 018 和 019。

因为以 为前缀的整数文字0被视为八进制,而 '8' 和 '9' 不是有效的八进制数字。

JLS 的第 3.10.1 节

八进制数字由一个 ASCII 数字 0 后跟一个或多个 ASCII 数字 0 到 7 和下划线组成,可以表示正整数、零整数或负整数。

尝试在八进制数中使用“8”就像尝试在十六进制中使用“G”......它很简单,不是该基数中使用的符号集的一部分。

于 2013-05-08T06:10:41.360 回答
7

八进制数(以 8 为基数)只能使用以下数字:01234567. 十进制数(以 10 为底)只能使用0123456789.

所以在八进制表示中,17 + 120

于 2013-05-08T06:10:29.313 回答
7

前缀 0 表示八进制(8 进制)(数字 0-7)。

public class MainClass{

  public static void main(String[] argv){

    int intValue = 034;  // 28 in decimal
    int six = 06; // Equal to decimal 6
    int seven = 07; // Equal to decimal 7
    int eight = 010; // Equal to decimal 8
    int nine = 011; // Equal to decimal 9

    System.out.println("Octal 010 = " + eight);

  }

}
于 2014-05-08T07:05:06.147 回答
6

为什么我不能给变量 018 和 019。我可以给变量值 020 和 021。

前导零表示八进制文字。但是,89不是有效的八进制数字。这使得018无效019

于 2013-05-08T06:10:53.150 回答
4

当整数文字在 Java 中以 0 开头时,它被假定为八进制表示法。数字89在八进制中是非法的——数字只能在 0 到 7 之间。

于 2013-05-08T06:10:46.900 回答
3

因为它是八进制数,所以八进制数的8数字范围从07包含。出于同样的原因12,将是无效的二进制数。

您至少需要9有一个基数18和一个正常的十进制基数19

于 2013-05-08T06:10:43.333 回答
-1

对于您的查询.....您为变量分配了一个无效值....您的分配值以 0(零)开头..这意味着您正在为变量分配一个八进制值,并且当您分配一个值时在您的情况下高于 7,例如 018...该值超出八进制变量的范围,因此显示错误...因此请尝试仅输入 18,以便将其视为整数而不是八进制变量数据类型.. .

于 2019-10-20T10:56:19.737 回答