Вы можете использовать метод String.format, который используется в другом ответе, для генерации строки из 0,
String.format("%0"+length+"d",0)
Это можно применить к вашей проблеме, динамически корректируя количество ведущих 0 в форматеstring:
public String leadingZeros(String s, int length) {
if (s.length() >= length) return s;
else return String.format("%0" + (length-s.length()) + "d%s", 0, s);
}
Это все еще грязное решение, но имеет то преимущество, что вы можете указать общую длину полученной строки, используя целочисленный аргумент.