Код следующий, все решает, все выводит, но при проверке сообщается что вывод не соответствует заданному, и посчитано неверно. Я не могу понять в чем ошибка у этого алгоритма. Задачу решил с помощью другого, но не найду покоя пока не пойму в чем здесь косяк.
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
//забираем число по модулю
int number = Math.abs(Integer.parseInt(reader.readLine()));
//если ноль записываем в четные
if (number == 0)
even++;
for(int i = 0; i < number; i++)
{
//берем последнее число ряда
int x = number%10;
//проверяем на четность
int z = x % 2;
if (z == 0)
even++;
else
odd++;
//отсекаем последнее число ряда
number = number / 10;
}
System.out.println("Even: " + even + " Odd: " + odd);
for(int i = 0; i < number; i++)
. А оно динамически уменьшается в процессе. Если первой цифрой, например, будет 9 и длинна числа не превышает 9 символов - ваш код нормально отработает, а если первой цифрой будет 1 - то у вас точно выпадет одно значение из числа, длиннее 2 символов. Для теста: 11 Решить можно как-то так: