有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java阻止Int将012345更改为5349

Possible Duplicate:
Integer with leading zeroes

我正在编写的程序要求我标记一个库存编号为012345的项目,并将其存储在一个int变量中

这是我正在做的一个简单的例子:

int test = 012345;
System.out.println(test);

该文件打印为:

5349

如何将其打印为012345而不是5349

编辑:我正在为我正在初始化的自定义类的构造函数的参数中输入它。然后我使用一种方法返回当前的数字,然后将其打印到终端窗口


共 (3) 个答案

  1. # 1 楼答案

    使用Integer.parseInt可以得到正确的结果。这将使您的字符串变成十进制字符串。(发现here)。JAVA API here声明它接受一个字符串并返回一个带符号的十进制数

  2. # 2 楼答案

    你得到了一个错误的数字,因为当你把零前置到一个整数文本时,Java会把这个数字解释为一个八进制(即base-8)常量。如果要添加前导零,请使用

    int test = 12345;
    System.out.println("0"+test);
    

    还可以将formated output functionality%06d说明符一起使用,如下所示:

    System.out.format("%06d", num);
    

    6表示“使用六位数”“0”表示“必要时用零填充”

  3. # 3 楼答案

    如前所述,前导为零的int值被认为是八进制值。如果不需要将test设置为int,为什么不将其设置为string呢?就像

    String test= new String("012345");
    

    如果你想在测试中使用int,你不需要在0前加前缀,只需要在打印时使用数字和0

    如果您想知道如何找到要预先设置的前导零的数量,您可以这样做

    int lengthOfItemID=6;
    int test=12345;
    String test1=new String("000000"+test);
    System.out.println(test1.substring(test1.length()-lengthOfItemID));
    

    请原谅语法错误,我上一次使用java已经很多年了