Добавить ведущие нули к числу в Java?
Вопрос: Как лучше сделать форматирование целого числа с добавлением нулей слева?
Я пытаюсь реализовать метод, который добавляет нули слева к целому числу, чтобы оно соответствовало определенному количеству цифр. Однако моя функция не работает корректно, если количество цифр в числе превышает заданное количество. Я чувствую, что такая функция уже должна быть реализована в стандартной библиотеке (например, что-то вроде 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();
}
Проблема:
- Если
num
имеет больше цифр, чем заданноеdigits
, функция выдает неожиданные результаты или даже может привести к ошибке. - Есть ли более эффективный способ достижения желаемого результата?
Буду рад любым рекомендациям или better practices в этом вопросе. Спасибо!
2 ответ(ов)
В вашем случае использование String.format
будет таким:
String formatted = String.format("%03d", num);
Здесь:
0
- указывает на необходимый нуль-заполнение.3
- устанавливает ширину вывода равной 3 символам.
Таким образом, если num
будет, например, равен 5, то formatted
будет содержать строку "005"
.
Вот пример кода на Java, который преобразует целое число в строку, добавляя ведущие нули до заданного количества цифр:
public static String intToString(int num, int digits) {
String output = Integer.toString(num);
while (output.length() < digits) output = "0" + output;
return output;
}
Этот метод принимает два параметра: целое число num
и количество digits
, которое определяет, сколько цифр должно быть в результате. Сначала число преобразуется в строку с помощью Integer.toString(num)
. Затем, если длина строки меньше заданного количества цифр, к началу строки добавляются нули, пока длина выражения не станет равной digits
. В конце функция возвращает получившуюся строку.
Обратите внимание, что это простой способ добавления ведущих нулей. Также можно рассмотреть использование класса String.format()
или String.format(Locale locale, String format, Object... args)
, чтобы сделать код короче и, возможно, более читаемым.
Инициализация ArrayList в одну строчку
Почему нет ConcurrentHashSet, если есть ConcurrentHashMap?
Как объявить массив в одну строку?
Загрузка JDK Java на Linux через wget приводит к отображению страницы лицензии вместо установки
Создание репозитория Spring без сущности