如何在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);