HustleCoder
@HustleCoder

Почему неправильно работает этот код?

Вот простенькая программа для разворота числа:

import java.util.Scanner;

public class Main {
    private static void invertDigits(Integer number) {
        Integer temp = 0;
        while (number != 0) {
            temp = temp * 10 + number % 10;
            number /= 10;
        }
        number = temp;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Integer number;
        System.out.print("Enter number: ");
        number = scanner.nextInt();
        invertDigits(number);
        System.out.println("Reverse digit order: " + number);
     }
}


Результат:
Enter number: 123
Reverse digit order: 123


Вопрос, почему number не изменился? Ведь в функцию передается Integer, а это ссылочный тип.
  • Вопрос задан
  • 132 просмотра
Решения вопроса 1
@Kot1que
пишу на жаве
1. Integer - неизменяемый.
2. https://stackoverflow.com/a/40523
import java.util.Scanner;

public class Main {
    private static Integer invertDigits(Integer number) {
        Integer temp = 0;
        while (number != 0) {
            temp = temp * 10 + number % 10;
            number /= 10;
        }
        return temp;
    }

    public static void main(String[] args) throws Exception {
        Scanner scanner = new Scanner(System.in);
        Integer number;
        System.out.print("Enter number: ");
        number = scanner.nextInt();
        System.out.println("Reverse digit order: " + invertDigits(number));
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Это не так работает. Если бы Integer был мутабельный, и ты изменял его внутренности, то изменения были бы видны.
Возвращай значение из метода.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
18 апр. 2024, в 01:12
150000 руб./за проект
18 апр. 2024, в 00:10
50000 руб./за проект