在Java中将前导零添加到数字中?有更好的方法来获得这个结果吗?如果num的数字比数字多,那么这个函数就会失败,我觉得它应该在某个库中(比如Integer.toString(x,“%3d”)等等)。static String intToString(int num, int digits) {
StringBuffer s = new StringBuffer(digits);
int zeroes = digits - (int) (Math.log(num) / Math.log(10)) - 1;
for (int i = 0; i < zeroes; i++) {
s.append(0);
}
return s.append(num).toString();}
3 回答
慕哥6287543
TA贡献1831条经验 获得超10个赞
因为Java1.5,您可以使用String.format
方法。例如,要执行与示例相同的操作:
String format = String.format("%%0%dd", digits);String result = String.format(format, num);return result;
在这种情况下,您将使用数字指定的宽度创建格式字符串,然后将其直接应用于数字。此示例的格式转换如下:
%% --> %0 --> 0%d --> <value of digits>d --> d
因此,如果数字等于5,则格式字符串将变为%05d
它指定宽度为5的整数,打印前导零。
白衣染霜花
TA贡献1796条经验 获得超10个赞
另一个选择是使用DecimalFormat若要格式化数字字符串,请执行以下操作。这里还有一种不用使用String.Format来完成这项工作的方法,如果您被困在1.5之前的世界中:
static String intToString(int num, int digits) { assert digits > 0 : "Invalid number of digits"; // create variable length array of zeros char[] zeros = new char[digits]; Arrays.fill(zeros, '0'); // format number as String DecimalFormat df = new DecimalFormat(String.valueOf(zeros)); return df.format(num);}
添加回答
举报
0/150
提交
取消