我正在尝试编写以下代码。但它给了我错误,请帮助我。
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赋予变量.i可以将值020和021赋予变量。 为什么会这样?这背后的原因请告诉我 我收到了以下错误
integer number too large: 018
int eight=018;
答案 0 :(得分:26)
Octal是base-8数字系统,所以它意味着数字可以是0到7,你不能在八进制数系统中使用数字8(和9)。
答案 1 :(得分:20)
为什么我不能给018和019变量。
因为前缀为0
的整数文字被视为八进制,而'8'和'9'不是有效的八进制数字。
八进制数字由ASCII数字0后跟一个或多个以下划线散布的ASCII数字0到7组成,并且可以表示正整数,零或负整数。
尝试在八进制数中使用'8'就像尝试在十六进制中使用'G'一样......它很简单,不是该基数中使用的符号集的一部分。
答案 2 :(得分:7)
八进制数字(基数为8)只能使用以下数字:01234567
。与十进制数字(基数10)只能使用0123456789
相同的方式。
因此,在八进制表示中,17 + 1
为20
。
答案 3 :(得分:6)
为什么我不能将018和019赋予变量.i可以将值020和021赋予变量。
前导零表示八进制文字。但是,8
和9
不是有效的八进制数字。这会使018
和019
无效。
答案 4 :(得分:6)
前缀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);
}
}
答案 5 :(得分:4)
当整数文字在Java中以0开头时,它被假定为八进制表示法。数字8
和9
在八进制中是非法的 - 数字的范围只能在0到7之间。
答案 6 :(得分:3)
因为它是八进制,所以八进制数具有8
个数字,从0
到7
包含。出于同样的原因,12
将是无效的二进制数。
至少需要9
基数18
才能获得19
的正常小数基数。
答案 7 :(得分:-1)
对于您的查询.....您为变量分配了无效的值....您分配的值以0(零)开始..这意味着您正在为变量分配八进制值,并且当您在您的情况下,分配一个大于7的值,例如018 ...该值超出了八进制变量的范围,因此显示错误...因此,请尝试简单地输入18,以便将其作为整数而不是八进制变量数据输入...