提问者:小点点

防止Int将012345更改为5349[重复]


可能重复:
前导零的整数

我正在编码的程序要求我标记库存编号为012345的商品并将其存储在int变量中。

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

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

这打印为:

5349

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

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


共3个答案

匿名用户

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

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

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

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

6表示“使用六位数字”;'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合作。

匿名用户

您可以使用Integer. parseInt获得正确的结果。这将使您的字符串变成十进制字符串。(在这里找到)。这里的JAVAAPI声明它接受一个字符串并返回一个有符号的十进制。