Задачу решил копипастом чужого решения, разобрался в нём, но всё же не даёт покоя вопрос: что было не так в моём решении? Сообщало, что неверный подсчёт и чётных и нечётных. Прогнал с кучей разных входных данных - вроде всё корректно. Помогите пожалуйста понять, где был подводный камень.
Ниже моё "неправильное" решение:
//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);