有没有更好的方法来得到这个结果?如果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();
}
从Java 1.5开始,你可以使用String。格式的方法。例如,做与你的例子相同的事情:
String format = String.format("%0%d", digits);
String result = String.format(format, num);
return result;
在本例中,您使用以数字指定的宽度创建格式字符串,然后将其直接应用于数字。本例的格式转换如下:
%% --> %
0 --> 0
%d --> <value of digits>
d --> d
因此,如果digits等于5,格式字符串就变成%05d,它指定一个宽度为5的整数,打印前导零。请参阅java文档中的String。格式化以获取有关转换说明符的更多信息。
从Java 1.5开始,你可以使用String。格式的方法。例如,做与你的例子相同的事情:
String format = String.format("%0%d", digits);
String result = String.format(format, num);
return result;
在本例中,您使用以数字指定的宽度创建格式字符串,然后将其直接应用于数字。本例的格式转换如下:
%% --> %
0 --> 0
%d --> <value of digits>
d --> d
因此,如果digits等于5,格式字符串就变成%05d,它指定一个宽度为5的整数,打印前导零。请参阅java文档中的String。格式化以获取有关转换说明符的更多信息。