import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Enter an ID number: "); long id = input.nextLong(); input.close(); System.out.println(isValid(id)); } public static boolean isValid(long number) { int sum = sumOfDoubleEvenPlace(number) + sumOfOddPlace(number); if(sum % 10 == 0) return true; else return false; } public static int sumOfDoubleEvenPlace(long number) { int sum = 0; while(number > 10) { sum += getDigit((int)(number % 10)); number /= 10; } sum += getDigit((int)number); return sum; } public static int getDigit(int number) { if(number < 10) return number; else return number / 10 + number % 10; } public static int sumOfOddPlace(long number) { int sum = 0; for(int i = 2; i <= 10; i += 2) sum += (getPrefix(number, i) % 10); return sum; } public static boolean prefixMatched(long number, int d) { long longD = (long)d; if(getPrefix(number, getSize(d)) == longD) return true; else return false; } public static int getSize(long d) { int count = 1; while(d > 10) { count++; d /= 10; } return count; } public static long getPrefix(long number, int k) { if(getSize(number) < k) return number; else { String tempString = "" + number; tempString = tempString.substring(0, k); long temp = Long.parseLong(tempString); return temp; } } }