Сумма трех первых и последних чисел

Я пытаюсь самостоятельно написать программу, которая разбивает шестизначное число на два трехзначных, затем складывает цифры в этих числах и сравнивает полученные суммы.

Однако, у меня получается бесконечный цикл. Подскажите, что подправить, только пожалуйста, без значительных изменений.

int happyNum = 123402;
int sumOne = happyNum % 1000;
int sumTwo = happyNum / 1000;
int sum1 = 0;
int sum2 = 0;
while (happyNum != 0) {
    sum1 += sumOne % 10;
    sumOne /= 10;
    sum2 += sumTwo % 10;
    sumTwo /= 10;
}
if (sum1 == sum2) {
    System.out.println("Число " + happyNum + " является счастливым");
    System.out.println("Сумма цифр ABC = " + sum1 + " , а сумма DEF = " + sum2);
}

Ответы (1 шт):

Автор решения: Nowhere Man

Решение с циклом for и переменной p для степени 10:

int happyNum = 123402;
int a = happyNum / 1000, b = happyNum % 1000;
int sum1 = 0, sum2 = 0;

for (int p = 1; p < 1000; p *= 10) {
    sum1 += a / p % 10;
    sum2 += b / p % 10;
}
if (sum1 == sum2) {
    System.out.println("Число " + happyNum + " является счастливым");
    System.out.println("Сумма цифр ABC = " + sum1 + " , а сумма DEF = " + sum2);
}

Решение с циклом while, без отдельной переменной p, в цикле будут изменяться старшие разряды a и младшие разряды b:

int happyNum = 123402;
int a = happyNum / 1000, b = happyNum % 1000;
int sum1 = 0, sum2 = 0;

while (a != 0 || b != 0) {
    sum1 += a % 10;
    sum2 += b % 10;
    a /= 10;
    b /= 10;
}
if (sum1 == sum2) {
    System.out.println("Число " + happyNum + " является счастливым");
    System.out.println("Сумма цифр ABC = " + sum1 + " , а сумма DEF = " + sum2);
}
→ Ссылка