если решать так
public static int even;
    public static int odd;

    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int numIn = Integer.parseInt(reader.readLine()); // задача требует ввода числа(это важно, сначала объявляем переменную типа int)
        String numText = String.valueOf(numIn); // затем объявляем переменную типа String и присваиваем ей значение вышеидущей переменной типа int,, естественно переводя в тип String)
        char[] numChar = numText.toCharArray(); // чтобы получить каждое число по отдельности нужно создать МАССИВ (объявляем квадратными скобками) в который положим переведенные из текста numText символы. У  массива каждое число получит порядковый номер начиная с нуля. То есть если мы ввели с клавиатуры числа 1, 2 и 3, то в массив они запишутся под такими порядковыми числами 0, 1 и 2 соответственно.

        for (int i = 0; i < numText.length(); i++) { //объявляем цикл с переменной i, которая  начинается с 0 и меньше чем numText.length() (так мы переводим количество символов переменной типа String в числовое значение, то есть при введенном числе 123, символов 3 и цикл будет длиться 3 раза)
            if (numChar[i] % 2 == 0) { // условие если массив с порядковым номером равным i (что справедливо для каждого из трех циклов) целое (при делении с остатком на 2 равен 0), то значение переменной  even увеличивается на единицу.
                even++;
            } else // иначе увеличивается  переменная odd.
                odd++;
        }
        System.out.println("Even: " + even + " " + "Odd: " + odd);
Получается программа получает число > переводит его в строку > переводит строку в символьный массив, тем самым разбивая строку на отдельные символы. Далее цикл, в цикле условием можно было добавить "numChar.Length" ошибки бы не было, что бы цикл обработал каждый из символов. Далее делим Символ под индексом [ i ], допустим, если число 4445, то символом под индексом [3] есть 5, то символ 5 % 2. И тут вопрос как символ может делится на число ? не пойму! Второй вопрос чем отичается метод Bufferreader read() от readLine()! И где можно почитать подробную информацию про char? я его прям боюсь, когда задачи его касаются, даже решать не хочу)) из за непонимания... Объясните пожалуйста!
for (int i=0; i<a.length();i++) {
    if(Integer.parseInt(a.substring(i,1+i))%2==0)
и что происходит тут? где почитать про эти методы?