How to check if the sum of two halves of a number is equal in Java

1 Answer

0 votes
public class HalvesSumCheck {

    static int sumDigits(long n) {
        int sum = 0;

        while (n != 0) {
            sum += (int)(n % 10);
            n /= 10;
        }

        return sum;
    }

    static boolean checkHalvesSumEqual(long n) {
        String s = Long.toString(Math.abs(n));
        int length = s.length();

        if ((length % 2) != 0) {
            System.out.print("The number of digits is NOT even. It cannot be split into two halves: ");
            return false;
        }

        int halfLength = length / 2;

        String firstHalf = s.substring(0, halfLength);
        String secondHalf = s.substring(length - halfLength);

        long num1 = Long.parseLong(firstHalf);
        long num2 = Long.parseLong(secondHalf);

        return sumDigits(num1) == sumDigits(num2);
    }

    public static void main(String[] args) {
        long num1 = 123456;
        long num2 = 123321;
        long num3 = 123123;
        long num4 = 123411;
        long num5 = 1234321;
        long num6 = 12321;

        System.out.println(num1 + ": " + checkHalvesSumEqual(num1));
        System.out.println(num2 + ": " + checkHalvesSumEqual(num2));
        System.out.println(num3 + ": " + checkHalvesSumEqual(num3));
        System.out.println(num4 + ": " + checkHalvesSumEqual(num4));
        System.out.println(num5 + ": " + checkHalvesSumEqual(num5));
        System.out.println(num6 + ": " + checkHalvesSumEqual(num6));
    }
}



/*
run:

123456: false
123321: true
123123: true
123411: true
The number of digits is NOT even. It cannot be split into two halves: 1234321: false
The number of digits is NOT even. It cannot be split into two halves: 12321: false

*/

 



answered Dec 22, 2025 by avibootz
...