Task Livecoding Java Reverse Number

32. Инверсия числа #

Условие задачи:
🔥 Написать метод, который принимает целое число, инвертирует его цифры и возвращает инвертированное число.

  • Примеры:
    • Было: -123, стало: -321
    • Было: 1121, стало: 1211
    • Диапазон допустимых чисел: от -10000 до 10000.
    • Если число вне диапазона, сообщите об этом пользователю API.
Спойлеры к решению
Подсказки
💡 Диапазон: Проверь диапазон входного числа до начала инверсии.
💡 Инверсия цифр: Используй цикл while, чтобы последовательно извлекать и собирать цифры числа.
💡 Обработка знака: Сохрани знак числа и применяй его после инверсии.
💡 Отладка: Добавь вывод сообщения, если число выходит за допустимый диапазон.
Решение
public class NumberUtils {

    public static Integer reverse(int x) {
        // Проверка диапазона: число должно быть от -10000 до 10000
        if (x < -10000 || x > 10000) {
            System.err.println("Введённое число " + x + " выходит за пределы диапазона [-10000, 10000].");
            return null;
        }

        int sign = x < 0 ? -1 : 1;
        int absX = Math.abs(x);
        int reversed = 0;
        
        // Инверсия цифр
        while (absX > 0) {
            reversed = reversed * 10 + absX % 10;
            absX /= 10;
        }
        
        return sign * reversed;
    }
    
    public static void main(String[] args) {
        int[] tests = {-123, 1121, 15000};
        for (int num : tests) {
            Integer result = reverse(num);
            if (result != null) {
                System.out.println("Исходное число: " + num + ", инвертированное: " + result);
            }
        }
    }
}

📌 Что улучшилось?
Проверка диапазона: Метод обрабатывает входные данные вне допустимого диапазона.
Корректная инверсия: Сохранение знака числа и последовательное извлечение цифр дают правильный результат.
Читаемость кода: Лёгкая для понимания реализация, что упрощает поддержку.
Пример использования: Функция main демонстрирует работу метода с различными входными данными.