Как вы оставили pad с int с нулями при преобразовании в String в java?
 Я в основном пытаюсь выставить целые числа до 9999 с ведущими нулями (например, 1 = 0001).
 Как вы оставили pad с int с нулями при преобразовании в String в java?
 Я в основном пытаюсь выставить целые числа до 9999 с ведущими нулями (например, 1 = 0001).
Используйте java.lang.String.format(String,Object...) следующим образом:
String.format("%05d", yournumber);
для нулевого заполнения с длиной 5. Для шестнадцатеричного вывода замените d на x, как в "%05x".
Полные параметры форматирования документируются как часть java.util.Formatter.
Если вы по какой-либо причине используете pre 1.5 Java, тогда можете попробовать с помощью метода Apache Commons Lang
org.apache.commons.lang.StringUtils.leftPad(String str, int size, '0')
		 Скажем, вы хотите напечатать 11 как 011
 Вы можете использовать форматтер: "%03d".
Вы можете использовать этот форматировщик следующим образом:
int a = 11;
String with3digits = String.format("%03d", a);
System.out.println(with3digits);
 Кроме того, некоторые java-методы напрямую поддерживают эти форматирования:
System.out.printf("%03d", a);
		Нашел этот пример... Будет ли тест...
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);
Обе работают, для моих целей я считаю, что String.Format лучше и более лаконично.
Если производительность важна в вашем случае, вы можете сделать это самостоятельно с меньшими накладными расходами по сравнению с функцией String.format:
/**
 * @param in The integer value
 * @param fill The number of digits to fill
 * @return The given value left padded with the given number of digits
 */
public static String lPadZero(int in, int fill){
    boolean negative = false;
    int value, len = 0;
    if(in >= 0){
        value = in;
    } else {
        negative = true;
        value = - in;
        in = - in;
        len ++;
    }
    if(value == 0){
        len = 1;
    } else{         
        for(; value != 0; len ++){
            value /= 10;
        }
    }
    StringBuilder sb = new StringBuilder();
    if(negative){
        sb.append('-');
    }
    for(int i = fill; i > len; i--){
        sb.append('0');
    }
    sb.append(in);
    return sb.toString();       
}
Производительность
public static void main(String[] args) {
    Random rdm;
    long start; 
    // Using own function
    rdm = new Random(0);
    start = System.nanoTime();
    for(int i = 10000000; i != 0; i--){
        lPadZero(rdm.nextInt(20000) - 10000, 4);
    }
    System.out.println("Own function: " + ((System.nanoTime() - start) / 1000000) + "ms");
    // Using String.format
    rdm = new Random(0);        
    start = System.nanoTime();
    for(int i = 10000000; i != 0; i--){
        String.format("%04d", rdm.nextInt(20000) - 10000);
    }
    System.out.println("String.format: " + ((System.nanoTime() - start) / 1000000) + "ms");
}
Результат
Собственная функция: 1697мс
String.format: 38134ms
Вы можете использовать Google Guava:
Maven:
<dependency>
     <artifactId>guava</artifactId>
     <groupId>com.google.guava</groupId>
     <version>14.0.1</version>
</dependency>
Пример кода:
String paddedString1 = Strings.padStart("7", 3, '0'); //"007"
String paddedString2 = Strings.padStart("2020", 3, '0'); //"2020"
Примечание:
 Guava - очень полезная библиотека, она также предоставляет множество функций, связанных с Collections, Caches, Functional idioms, Concurrency, Strings, Primitives, Ranges, IO, Hashing, EventBus и т.д.
Ссылка: GuavaExplained
Попробуй это:
import java.text.DecimalFormat; 
DecimalFormat df = new DecimalFormat("0000");
String c = df.format(9);   // 0009
String a = df.format(99);  // 0099
String b = df.format(999); // 0999
		Хотя многие из вышеперечисленных подходов хороши, но иногда нам нужно форматировать целые числа, а также плавать. Мы можем использовать это, особенно когда нам нужно заполнить определенное число нулей слева, а также право десятичных чисел.
import java.text.NumberFormat;  
public class NumberFormatMain {  
public static void main(String[] args) {  
    int intNumber = 25;  
    float floatNumber = 25.546f;  
    NumberFormat format=NumberFormat.getInstance();  
    format.setMaximumIntegerDigits(6);  
    format.setMaximumFractionDigits(6);  
    format.setMinimumFractionDigits(6);  
    format.setMinimumIntegerDigits(6);  
    System.out.println("Formatted Integer : "+format.format(intNumber).replace(",",""));  
    System.out.println("Formatted Float   : "+format.format(floatNumber).replace(",",""));  
 }    
}  
		int x = 1;
System.out.format("%05d",x);
если вы хотите напечатать форматированный текст непосредственно на экране.
Используйте класс DecimalFormat, например:
NumberFormat formatter = new DecimalFormat("0000"); //i use 4 Zero but you can also another number
System.out.println("OUTPUT : "+formatter.format(811)); 
 ВЫХОД: 0000811
Проверьте мой код, который будет работать для integer и String.
Предположим, что наше первое число равно 2. И мы хотим добавить к нему нули, так что длина окончательной строки будет равна 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);
		Вам нужно использовать 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
public static String zeroPad(long number, int width) {
   long wrapAt = (long)Math.pow(10, width);
   return String.valueOf(number % wrapAt + wrapAt).substring(1);
}
Единственная проблема с этим подходом заключается в том, что он заставляет вас задуматься о том, как это работает.
Не требуется пакетов:
String paddedString = i < 100 ? i < 10 ? "00" + i : "0" + i : "" + i;
Это добавит строку к трем символам, и ее можно будет добавить больше на четыре или пять. Я знаю, что это не идеальное решение в любом случае (особенно если вам нужна большая дополненная строка), но мне это нравится.