有没有更好的方法来获得这个结果?如果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();
}
Run Code Online (Sandbox Code Playgroud)
beg*_*ray 1273
String.format(http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html#syntax)
在你的情况下,它将是:
String formatted = String.format("%03d", num);
Run Code Online (Sandbox Code Playgroud)
Jas*_*oco 91
从Java 1.5开始,您可以使用该String.format方法.例如,要做与您的示例相同的事情:
String format = String.format("%%0%dd", digits);
String result = String.format(format, num);
return result;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您将使用数字指定的宽度创建格式字符串,然后将其直接应用于数字.此示例的格式转换如下:
%% --> %
0 --> 0
%d --> <value of digits>
d --> d
Run Code Online (Sandbox Code Playgroud)
因此,如果数字等于5,则格式字符串变为%05d,指定宽度为5的整数打印前导零.请参阅Java文档的String.format有关转换说明的更多信息.
Eli*_*jah 35
另一种选择是使用DecimalFormat格式化数字String.如果你被困在pre 1.5世界中,这里有另一种方法来完成这项工作,而不必使用String.format:
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);
}
Run Code Online (Sandbox Code Playgroud)
小智 7
怎么样只是:
public static String intToString(int num, int digits) {
String output = Integer.toString(num);
while (output.length() < digits) output = "0" + output;
return output;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
464859 次 |
| 最近记录: |