Найти 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 шт):

Автор решения: Stanislav Volodarskiy

Цикл для рассчёта sum2:

int sum2 = 0;
for (int d = 100; d > 0; d /= 10) {
    int num = (happyNum / d) % 10;
    sum2 += num;
}

Так обычно не делают, но так можно решить вашу задачу.

→ Ссылка
Автор решения: Nowhere Man

Вариант решения с отдельным методом для вычисления суммы цифр числа в цикле:

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!");
}
→ Ссылка