Java问题, 假设我有一个像0000102这样的数字,0很重要,因为它们需要在那里。
如何以int(或允许我增加它的其他方式)保存此信息
例如,在检查数字0000102后,它会添加一个并检查0000103
当我尝试将其保存为int时,它只会恢复为102并消除0,因此在搜索数据库时不匹配,因为它不再相同。有没有人知道我可以做到这一点,如果没有删除0的。感谢
编辑:
我使用前导零添加的最终解决方案是这个函数,它需要一个前导0的字符串为它添加一个,然后返回字符串
String nextNum(String s){
int number =0;
String newNum ="";
int len = s.length();
int newLength =0;
for(int i =0; i < s.length()-1; i++){
if (s.charAt(i) == '0')
newNum+="0";
else
break;
}
number = Integer.parseInt(s);
number++;
newNum += String.valueOf(number);
newLength = newNum.length();
if(newLength == len)
return newNum;
else
return newNum.substring(1); //incase number was 000099 it doesnt go to 0000100 it goes to 000100 instead
}
答案 0 :(得分:5)
您可以将printf
与"%0d"
合并使用字符串格式,如下所示:
String num = "000123";
Integer n = Integer.parseInt(num);
n++;
int len = num.length();
System.out.printf("%0" + len + "d", n); // 000124
// and if you want to store the result
// back into a string:
String res = String.format("%0" + len + "d", n);
System.out.println(res); // 000124
答案 1 :(得分:1)
数字本身与数字的表示分开。与我们通常所说的相关的数字&#34; ten&#34;始终是计算这些数量的数量:||||||||||,但它有许多可能的字符串表示形式:&#34; 10&#34;,&#34; 0000010&#34;,&#34; 0x0a& #34;,&#34; 1010(2)&#34; ...(并非所有这些都是有效的Java表示,只是人类正在使用的各种表示)
您的号码将始终存储在计算机中,以便(大部分)准确处理数量。通常不存储字符串表示;它每次计算。例如,当您执行System.out.println(102)
时,它实际上被处理为System.out.println(Integer.toString(102, 10))
。
在102
和"0000102"
之间,计算您要存储哪一个以及要显示哪一个,并在需要另一个时适当转换。
答案 2 :(得分:1)
您可以将值存储为int(不带零),但是当您想要打印或显示它时,可以将其转换为带有前导零的String。这是一个示例转换方法。
public String addZeroes(int value, int desiredLength) {
String valueString = value + "";
int valueLength = valueString.length();
for (int i = 0; i < desiredLength - valueLength; i++) {
valueString = "0" + valueString;
}
return valueString;
}
答案 3 :(得分:0)
您需要使用String
。
十进制数000102
和0102
以及102
(就此而言,十六进制数0x66
)都是相同的整数值,没有办法将它们存储为int
后区分它们。
如果要保留整数的特定字符表示,则需要一个字符串。
要增加String,您需要将其解析为Integer,然后重新格式化。
String increment(String s) {
int n = Integer.parseInt(s, 10)
return ("%0" + s.length() + "d").format(n+1);
}
答案 4 :(得分:0)
你说你需要跟踪前导零,但这与数字本身是分开的。我会将数字本身保留为int
,并使用所需的零数保留不同的变量。这将使数字保持数字的语义含义为数字(并允许递增,如您所说),并且在显示时,根据第二个值在需要时填充或填充零。