Давайте возьмем n=25
. После передачи значения в squareDigits(int 25)
.
1) Сначала создается StringBuilder
.
2) while(n > 0)
: 25> 0, поэтому оно удовлетворяет условию для полученияв цикл.
3) int digit = n % 10
: n = 5.
4) int square = digit * digit
: квадрат = 25.
5) builder.insert(0,square)
: вставляетЗначение square
на 0-й позиции в builder
.
6) n = Math.floorDiv(n, 10);
: Math.floorDiv(int x,int y)
возвращает наибольшее (самое близкое к положительной бесконечности) целочисленное значение, которое меньше или равно алгебраическому коэффициенту. n = 2.
7) Повторяет шаг 2 со значением 2. digit
становится 2, square
становится 4, builder
вставляет значение 4, но 25 уже присутствует, поэтому самое последнее значение 4добавляется к 25.
8) n
становится Math.floorDiv(2, 10)
, что возвращает 0,2. При проверке условия while
оно не удовлетворяет уравнению.
9) builder
преобразуется в строку с помощью toString()
и с помощью Integer.parseInt()
преобразует возвращаемое значение строки в целое число, которое в итоге возвращает 425.