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
*/