3

我正在开发的产品(25 年前的产品)非常庞大且复杂。所以让我在简单的场景中解释我想要什么:

我已经声明了一个int变量。说,int var = 0001;

当我们尝试检索 的值时var,我们会得到1

现在,我的要求是,是否可以在0001不更改方法的签名或返回类型的情况下返回?

4

7 回答 7

15

如果您知道可以使用多少位数

String.format("%04d", number); 

int 总是返回 1

于 2013-07-01T07:29:14.267 回答
10

您不能存储0001int.

Anint存储一个数字,即1。你需要一个格式

当你int隐含地“检索”你的你Integer.toString()时;这就是您需要告诉 Java 如何格式化它的地方。

您还没有真正提供任何信息,但我想您总是需要 4 位数字,在这种情况下,格式掩码0000应该可以解决问题。

public static void main(String[] args) throws Exception {
    final int i = 1;
    final DecimalFormat decimalFormat = new DecimalFormat("0000");                
    System.out.println(decimalFormat.format(i));
}

输出:

0001
于 2013-07-01T07:29:39.987 回答
1

不要从 0 开始数字——在 Java 中它们被认为是八进制(以 8 为底) ——除非你有奇怪的结果,例如:

001 == 1

010 == 8 // 八进制 10 == 十进制 8

0123 == 83 // 八进制 123 是十进制 83

08 - error! This's not an octal value

等等

而是在您想打印您的号码时使用格式

 int number = 1; // <- Just a decimal integer
 String result = String.form("My number is %04d in dddd format", number);
于 2013-07-01T07:39:21.890 回答
0

两种可能:

  1. 该值实际上是八进制,您需要处理转换等或
  2. 这只是一个数据表示问题,在与几乎和我一样古老的系统进行交互之前,您需要将其转换为具有所需左填充的字符串。
于 2013-07-01T07:30:18.253 回答
0

在 int 的零之前,在 Java 中被视为八进制。因此,您不能将 0001 存储为 int。

于 2013-07-01T07:31:48.637 回答
-1

如果您知道数字的确切长度。例如 6。

int x = 5
String s = "";
s = ""+x;
while(s.length() < 6){
   s = "0"+s;
}

这将打印 000005。

于 2018-06-14T19:41:35.043 回答
-3

经过一番了望,我找到了一个可行的答案。

DecimalFormat df=new DecimalFormat("0000");
int i=1;
i=df.format(i);

这对我有用。

于 2016-12-29T08:19:43.750 回答