在Java中将前导零添加到数字中?

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


慕雪6442864
浏览 941回答 3
3回答

慕哥6287543

因为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的整数,打印前导零。

白衣染霜花

另一个选择是使用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);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java