Разворот числа в Java — программа через цикл while
Чтобы перевернуть число (например, превратить 1234 в 4321), нужно последовательно отделять последнюю цифру и приписывать её к новому числу.
Пример 1: переворот числа с помощью цикла while
На каждой итерации мы берём остаток от деления на 10 (последняя цифра) и добавляем его в reversed, домножив накопленное на 10.
class Main {
public static void main(String[] args) {
int num = 1234, reversed = 0;
System.out.println("Original Number: " + num);
// run loop until num becomes 0
while(num != 0) {
// get last digit from num
int digit = num % 10;
reversed = reversed * 10 + digit;
// remove the last digit from num
num /= 10;
}
System.out.println("Reversed Number: " + reversed);
}
}
Вывод:
Reversed Number: 4321
Цикл while переворачивает число по следующим шагам:
Сначала остаток от деления
numна 10 сохраняется вdigit— это последняя цифра числа (4).digitдобавляется кreversedпосле умноженияreversedна 10. Умножение на 10 сдвигает разряды влево: единицы становятся десятками, десятки — сотнями и так далее. На первой итерацииreversed= 0 × 10 + 4 = 4.Затем
numделится на 10, чтобы избавиться от последней цифры (теперьnum= 123).После второй итерации:
digit= 3,reversed= 4 × 10 + 3 = 43,num= 12.После третьей:
digit= 2,reversed= 43 × 10 + 2 = 432,num= 1.После четвёртой:
digit= 1,reversed= 432 × 10 + 1 = 4321,num= 0.Когда
numстановится равно 0, цикл прекращается, иreversedсодержит перевёрнутое число.
Пример 2: переворот числа с помощью цикла for
Тот же алгоритм можно записать через for, перенеся уменьшение числа в блок обновления.
class Main {
public static void main(String[] args) {
int num = 1234567, reversed = 0;
for(;num != 0; num /= 10) {
int digit = num % 10;
reversed = reversed * 10 + digit;
}
System.out.println("Reversed Number: " + reversed);
}
}
Вывод:
Reversed Number: 7654321
В этом варианте while заменён на for, где:
блок инициализации пуст, потому что
numуже инициализирован выше;условие то же —
num != 0;блок обновления содержит
num /= 10.