public class CheckDigit
{
    public static int getCheck(int num)
    {
        int sum = 0;
        int numDigits = getNumberOfDigits(num);

        for(int n = 1; n <= numDigits; n++)
            sum += getDigit(num, n) * (8 - n);

        return sum % 10;
    }

    public static boolean isValid(int numWithCheckDigit)
    {
        int number = numWithCheckDigit / 10;
        int checkDigit = numWithCheckDigit % 10;

        return getCheck(number) == checkDigit;
    }

    public static int getNumberOfDigits(int num)
    {
        int digits = 1;

        int numRemaining = num / 10;

        while(numRemaining > 0)
        {
            numRemaining /= 10;
            digits++;
        }

        return digits;
    }

    public static int getDigit(int num, int n)
    {
        return (num / (int) Math.pow(10, getNumberOfDigits(num) - n)) % 10;
    }
}
