可以在int中存储0001吗?

时间:2013-07-01 07:24:41

标签: java

我正在研发的产品(25年的产品)非常庞大和复杂。因此,让我在简单的场景中解释我想要的东西:

我已声明int变量。说,int var = 0001;

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

现在,我的要求是,是否可以返回0001,而无需更改方法的签名或返回类型?

7 个答案:

答案 0 :(得分:7)

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

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

int将总是返回1

答案 1 :(得分:7)

您无法将0001存储为int

int存储号码,即1。您需要格式

当你隐含地“{1}}”int“检索”它时;这就是你需要告诉Java如何格式化它的地方。

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

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));
}

答案 2 :(得分: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);

答案 3 :(得分:0)

两种可能性:

  1. 该值实际上是八进制,您需要处理转换等或
  2. 这只是一个数据表示问题,你需要将它转换为一个带有必要左边填充的字符串,然后再与几乎和我一样古老的系统进行交互。

答案 4 :(得分:0)

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

答案 5 :(得分:-1)

如果您知道号码的确切长度。例如6。

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

这将打印000005。

答案 6 :(得分:-3)

经过一番了解后,我发现了一个有效的答案。

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

这对我有用。