6

Добавить ведущие нули к числу в Java?

12

Вопрос: Как лучше сделать форматирование целого числа с добавлением нулей слева?

Я пытаюсь реализовать метод, который добавляет нули слева к целому числу, чтобы оно соответствовало определенному количеству цифр. Однако моя функция не работает корректно, если количество цифр в числе превышает заданное количество. Я чувствую, что такая функция уже должна быть реализована в стандартной библиотеке (например, что-то вроде 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 ответ(ов)

15

В вашем случае использование String.format будет таким:

String formatted = String.format("%03d", num);

Здесь:

  • 0 - указывает на необходимый нуль-заполнение.
  • 3 - устанавливает ширину вывода равной 3 символам.

Таким образом, если num будет, например, равен 5, то formatted будет содержать строку "005".

0

Вот пример кода на 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), чтобы сделать код короче и, возможно, более читаемым.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь