Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中设置八进制值?_Java_Octal - Fatal编程技术网

如何在java中设置八进制值?

如何在java中设置八进制值?,java,octal,Java,Octal,我试图写以下代码。但它给我错误,请帮助我 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。 为什么会这样?这背后的原因是什么请告诉我。 我犯了以下错误

我试图写以下代码。但它给我错误,请帮助我

    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;
八进制数(基数8)只能使用以下数字:
01234567
。与十进制数(以10为基数)只能使用
0123456789
的方式相同

所以在八进制表示法中,
17+1
20

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

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

发件人:

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


尝试在八进制数中使用“8”就像尝试在十六进制数中使用“G”。。。它不是该基数中使用的符号集的一部分。因为它是八进制数,八进制数有
8
位,从
0
7
不等。出于同样的原因,
12
将是无效的二进制数


您需要至少以
9
为基数,才能有
18
19
的正常十进制基数

在Java中,当整数文本以0开头时,假定它是八进制表示法。数字
8
9
在八进制中是非法的。数字的范围只能在0到7之间

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


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

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

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

如果数字是字符串格式,则可以使用下面的

String text = "0b111101111";
int value = text.toLowerCase().startsWith("0b") ? Integer.parseInt(text.substring(2), 2)
                                  : Integer.decode(text);

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

八进制数仅由0到0组成7.你打破了这个限制。你期望abc的结果是什么?感觉你还没有真正理解八进制是什么…谢谢,我忘记了前缀,我一直在寻找:)@miliu你在混合八进制和十进制-我的意思是:017+01=020.Integer.decode()不解析二进制(“0b1010…”)-它只解析十六进制、八进制和十进制。
// 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; 
String text = "0b111101111";
int value = text.toLowerCase().startsWith("0b") ? Integer.parseInt(text.substring(2), 2)
                                  : Integer.decode(text);