我正在开发的产品(25 年前的产品)非常庞大且复杂。所以让我在简单的场景中解释我想要什么:
我已经声明了一个int
变量。说,int var = 0001;
当我们尝试检索 的值时var
,我们会得到1
。
现在,我的要求是,是否可以在0001
不更改方法的签名或返回类型的情况下返回?
我正在开发的产品(25 年前的产品)非常庞大且复杂。所以让我在简单的场景中解释我想要什么:
我已经声明了一个int
变量。说,int var = 0001;
当我们尝试检索 的值时var
,我们会得到1
。
现在,我的要求是,是否可以在0001
不更改方法的签名或返回类型的情况下返回?
如果您知道可以使用多少位数
String.format("%04d", number);
int 总是返回 1
您不能存储0001
为int
.
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
不要从 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);
两种可能:
在 int 的零之前,在 Java 中被视为八进制。因此,您不能将 0001 存储为 int。
如果您知道数字的确切长度。例如 6。
int x = 5
String s = "";
s = ""+x;
while(s.length() < 6){
s = "0"+s;
}
这将打印 000005。
经过一番了望,我找到了一个可行的答案。
DecimalFormat df=new DecimalFormat("0000");
int i=1;
i=df.format(i);
这对我有用。