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

时间:2013-05-08 06:09:04

标签: 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赋予变量.i可以将值020和021赋予变量。 为什么会这样?这背后的原因请告诉我 我收到了以下错误

            integer number too large: 018
            int eight=018;

8 个答案:

答案 0 :(得分:26)

Octal是base-8数字系统,所以它意味着数字可以是0到7,你不能在八进制数系统中使用数字8(和9)。

答案 1 :(得分:20)

  

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

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

来自section 3.10.1 of the JLS

  

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

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

答案 2 :(得分:7)

八进制数字(基数为8)只能使用以下数字:01234567。与十进制数字(基数10)只能使用0123456789相同的方式。

因此,在八进制表示中,17 + 120

答案 3 :(得分:6)

  

为什么我不能将018和019赋予变量.i可以将值020和021赋予变量。

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

答案 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开头时,它被假定为八进制表示法。数字89在八进制中是非法的 - 数字的范围只能在0到7之间。

答案 6 :(得分:3)

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

至少需要9基数18才能获得19的正常小数基数。

答案 7 :(得分:-1)

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