4

可能重复:
带前导零的整数

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

这是我正在做的一个精简示例:

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

这打印为:

5349

如何让它打印为 012345 而不是 5349?

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

4

3 回答 3

9

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

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

您还可以将格式化输出功能与说明符一起%06d使用,如下所示:

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

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

于 2012-11-13T04:06:57.103 回答
0

如前所述,带前导零的 int 值被视为八进制值。如果您不需要将 test 作为 int,为什么不将其设为字符串?像

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 已经有好几年了。

于 2012-11-13T04:12:39.943 回答
-1

您可以使用Integer.parseInt. 这将使您的字符串变成十进制字符串。(在这里找到)。这里的 JAVA API声明它接受一个字符串并返回一个带符号的十进制。

于 2012-11-13T04:08:17.973 回答