Если пишу задачу так, то цикл отрабатывает нужное количество раз и задача решается.
public class Solution {

    public static int even;
    public static int odd;

    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        String x = reader.readLine();
        int y = x.length();
        //System.out.println(x.length());

        for (int i = 0; i < y; i++) {
            if ((Integer.parseInt(x) % 10)%2 == 0) {
                even++;
                x = String.valueOf(Integer.parseInt(x) / 10);
                System.out.println(x);
            }
            else{
                odd++;
                x = String.valueOf(Integer.parseInt(x) / 10);
                System.out.println(x);
            }

        }

        System.out.println("Четных " + even);
        System.out.println("Нечетных " + odd);
    }
}
А, если напишу, как положено:
public class Solution {

    public static int even;
    public static int odd;

    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        String x = reader.readLine();
        //int y = x.length();
        //System.out.println(x.length());

        for (int i = 0; i < x.length(); i++) {
            if ((Integer.parseInt(x) % 10)%2 == 0) {
                even++;
                x = String.valueOf(Integer.parseInt(x) / 10);
                System.out.println(x);
            }
            else{
                odd++;
                x = String.valueOf(Integer.parseInt(x) / 10);
                System.out.println(x);
            }

        }

        System.out.println("Четных " + even);
        System.out.println("Нечетных " + odd);
    }
}
то ответ получается, как будто счетчик не доходит до конца, хотя x.length выводит правильное число
помогите разобраться, где я чего-то не понимаю?