public class Solution {
public static void main(String[] args) {
System.out.println(sumDigitsInNumber(546));
}
public static int sumDigitsInNumber(int number) {
int n = number;
int s = 0;
for(int i = n; i>0; i/=10) {
s += i % 10;
}
return s;Daniil
17 уровень
Добрый вечер, кто может подробно объяснить как работает мой цикл, не могу понять)! про операторы присваивания и арифметические прочел, но все равно не очень понимаю )
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
--------Master
28 декабря 2017, 16:43
Создается переменная i, ей присваивается значение переменной n. Пока i > 0, выполняется тело цикла в фигурных скобках { ... }, после каждого выполнения происходит деление i на 10 и проверка, что i > 0
+2
Daniil
28 декабря 2017, 16:55
Спасибо, это я понял) Правильно ли я рассуждаю? i это 546, 546 мы делим на 10 и получаем i = 54. Далее мы 54 / 10 и прибавляем 0. s = 5?
0
--------Master
28 декабря 2017, 17:13
В теле цикла ты не делишь на 10, а получаешь остаток от деления, как раз равный последней цифре i. Затем, в новой итерации, i делится на 10 с отбрасыванием остатка (потому что целое, а не дробное число), и берется остаток уже для нового значения i - так и перебираются все цифры.
Если брать 546, то 546 % 10 == 6; 546 / 10 == 54 -> 54 % 10 == 4; 54 / 10 == 5 -> 5 % 10 == 5
+5
Daniil
28 декабря 2017, 17:23
Спасибо огромное, теперь понял!
0