Найти happyNumber. Код не работает. Java
Отредактировал вопрос. Акткальная проблема,как же решить задачу с циклом?
int num2 = (happyNum / 10000) % 10;
int num3 = (happyNum / 1000) % 10;
int num4 = (happyNum / 100) % 10;
int num5 = (happyNum / 10) % 10;
int num6 = happyNum % 10;
int sum1 = num1 + num2 + num3;
int sum2 = num4 + num5 + num6;
if (sum1 == sum2) {
System.out.println("да");
Ответы (2 шт):
Цикл для рассчёта sum2:
int sum2 = 0;
for (int d = 100; d > 0; d /= 10) {
int num = (happyNum / d) % 10;
sum2 += num;
}
Так обычно не делают, но так можно решить вашу задачу.
Вариант решения с отдельным методом для вычисления суммы цифр числа в цикле:
static int sumDigits(int n) {
int sum = 0;
while (n != 0) {
sum += n % 10;
n /= 10;
}
return sum;
}
Затем этот метод вызывается для младших и старших разрядов 6-значного десятичного числа:
int n = 123402;
int sumLo = sumDigits(n % 1000); // три младших разряда
int sumHi = sumDigits(n / 1000); // старшие разряды
if (sumLo == sumHi) {
System.out.println("Happy!");
}
System.out.println("Младшие разряды: " + sumLo);
System.out.println("Старшие разряды: " + sumHi);
Happy!
Младшие разряды: 6
Старшие разряды: 6
Отдельный метод / функция для подсчёта суммы следует использовать, чтобы его было проще тестировать и в случае необходимости заменить другой реализацией.
Например, рекурсивное вычисление суммы цифр числа в десятичной системе счисления может выглядеть так:
static int sumDigits(int n) {
return n == 0 ? 0 : n % 10 + sumDigits(n / 10);
}
Или если заведомо известно, что число десятичных разрядов не превысит трёх, то можно использовать и первоначальный вариант без цикла:
static int sumDigits(int n) {
return n % 10 + n / 10 % 10 + n / 100;
}
Вариант с циклами без отдельного метода по мотивам ответа Станислава Володарского с использованием переменной для определения разряда:
int n = 123402;
int p = 1; // степень десяти
int sum1 = 0;
for (; p < 1000; p *= 10) { // первых три разряда
sum1 += n / p % 10;
}
int sum2 = 0;
for (; p < 1000_000; p *= 10) { // следующих три разряда
sum2 += n / p % 10;
}
if (sum1 == sum2) {
System.out.println("Happy!");
}