你如何在java中转换为字符串时留下一个零填充int ?

我基本上是在寻找以前导零填充到9999的整数(例如1 = 0001)。


当前回答

检查我的代码,将工作的整数和字符串。

假设第一个数字是2。我们要给它加上0所以最终字符串的长度是4。为此,您可以使用以下代码

    int number=2;
    int requiredLengthAfterPadding=4;
    String resultString=Integer.toString(number);
    int inputStringLengh=resultString.length();
    int diff=requiredLengthAfterPadding-inputStringLengh;
    if(inputStringLengh<requiredLengthAfterPadding)
    {
        resultString=new String(new char[diff]).replace("\0", "0")+number;
    }        
    System.out.println(resultString);

其他回答

使用java.lang.String.format(String,Object…)

String.format("%05d", yournumber);

对于长度为5的零填充。对于十六进制输出,将d替换为“%05x”中的x。

完整的格式化选项被记录为java.util.Formatter的一部分。

找到这个例子…将测试……

import java.text.DecimalFormat;
class TestingAndQualityAssuranceDepartment
{
    public static void main(String [] args)
    {
        int x=1;
        DecimalFormat df = new DecimalFormat("00");
        System.out.println(df.format(x));
    }
}

测试了这个和:

String.format("%05d",number);

对于我的目的,我认为这两个都可以。格式更好,更简洁。

您需要使用Formatter,下面的代码使用NumberFormat

    int inputNo = 1;
    NumberFormat nf = NumberFormat.getInstance();
    nf.setMaximumIntegerDigits(4);
    nf.setMinimumIntegerDigits(4);
    nf.setGroupingUsed(false);

    System.out.println("Formatted Integer : " + nf.format(inputNo));

输出:0001

使用类DecimalFormat,如下所示:

NumberFormat formatter = new DecimalFormat("0000"); //i use 4 Zero but you can also another number
System.out.println("OUTPUT : "+formatter.format(811)); 

输出:0000811

如果你出于任何原因使用1.5之前的Java,那么可以尝试使用Apache Commons Lang方法

org.apache.commons.lang.StringUtils.leftPad(String str, int size, '0')