Задачу решил копипастом чужого решения, разобрался в нём, но всё же не даёт покоя вопрос: что было не так в моём решении? Сообщало, что неверный подсчёт и чётных и нечётных. Прогнал с кучей разных входных данных - вроде всё корректно. Помогите пожалуйста понять, где был подводный камень. Ниже моё "неправильное" решение:
//even и odd объявлены ранее

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int iInputNumber = Integer.parseInt(reader.readLine());
int i=1,j=1,quantityDigitsInNumber=0;

//блок, считающий кол-во цифр в числе
if (iInputNumber == 0) {
    quantityDigitsInNumber=1;
    even++;
}
else {
    while (i!=0) {
        i=iInputNumber/j;
        j*=10;
        quantityDigitsInNumber++;
    }
    quantityDigitsInNumber--;

    //подготовка переменных для работы с циклом подсчёта чётных/нечётных
    j/=100.0;
    int tempInputNumber = iInputNumber;

    //цикл, считающий кол-во чётных и нечётных
    for (i=1; i<=quantityDigitsInNumber; i++) {
        tempInputNumber = iInputNumber%j;
        iInputNumber -= tempInputNumber;
        iInputNumber /= j;

        if (iInputNumber%2==0) even++;
        else odd++;

        iInputNumber = tempInputNumber;
        j /= 10;
    }
}

System.out.println("Even: "+even+" Odd: "+odd);