Чётные и нечётные циферки

  • 10
  • Недоступна
Давайте определим, сколько четных цифр, а сколько нечетных в числе, введенном с клавиатуры. Если число делится без остатка на 2 (т. е. остаток равен нулю), значит оно четное. Увеличиваем на 1 счетчик четных цифр (статическая переменная even). Иначе число нечетное, увеличиваем счетчик нечетных цифр (статическая переменная odd).
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (664)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ventre Cibus
Уровень 6, Самара, Россия
4 августа, 19:22
public class Solution {

    public static int even;
    public static int odd;

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

        for(int n = Integer.parseInt(br.readLine()); n!=0;n/=10 ){
            if ((n%10)%2 == 0){
                even++;
            }else {
                odd++;
            }
        }

        System.out.printf("Even: %d Odd: %d",even, odd);
    }
}
Arkadiy
Уровень 16, Санкт-Петербург
8 апреля, 11:36
Возможно, будет кому-то интересно и понадобится. Логично ,что есть несколько реализаций, одна из них...Лайк если помог и правильно (см ведь только учусь) ....PS в коде пару эстетических , как по мне, моментов
Александр Android Developer
8 апреля, 10:21
String s = br.readLine(); //читаем строку s.length() //длина строки (количество цифр) далее массив, перебираем символы строки, сравнивая остаток от деления символа в s.charAt(i) на 2 с 0. Соответственно увеличиваем количество четных или нечетных
Евгений N
Уровень 13
31 марта, 15:14
а почему не принимае ВЕРНОЕ решение через анализ строк? пишет "Убедись, что количество нечетных цифр сохраняется в переменную odd." "Убедись, что количество четных цифр сохраняется в переменную even."
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String s = reader.readLine();
int n = 0, odd=0, even=0;
        for ( int i=0; i<s.length(); i++ )
           n = "02468".contains( s.substring(i,i+1) ) ? even++ : odd++;
        System.out.println("Even: "+even+" "+"Odd: "+ odd);
зы "ошибку" нашел. :)
Dima Solokha
Уровень 6, Краснодар, Россия
22 декабря 2021, 20:43
Отличная задача. Сам не решил, но разобрав решение многое понял.
Ян
Уровень 23, Москва
13 октября 2021, 15:35
Скажите пожалуйста, почему while(a > 1) не срабатывало и надо было != 0 условие делать? При этом, пару тестов я делал с числами 89756 и 4445 и результат был идентичен правильному. В чём тут прикол?
Dmitry Tolstov Backend Developer в Microsoft
27 сентября 2021, 16:20
Решил таким способом.
Роман
Уровень 15, Киев
14 сентября 2021, 06:57
Зачем a = a / 10 ; ???
Andrew Joy
Уровень 15, Санкт-Петербург, Россия
26 сентября 2021, 14:17
Эта строка необходима для того, чтобы цикл не был бесконечным, т.к. это счётчик, т.е. по окончании подсчёта even и odd c помощью данной строки мы выйдем из цикла. Каждое последующее прохождение цикла смещает запятую влево.
Mark
Уровень 19, Москва, Россия
29 сентября 2021, 11:28
допустим ты ввел в программу число 1234. Деля число по остатку %2 каждый раз ты по сути сравниваешь последнюю цифру. Следующим шагом чтоб не сравнивать повторно 1234, а получить 123, ты делишь 1234 на 10 (1234/10). В яве при таком делении целых чисел (int) дробная часть отбрасывается. Т.е. в школе на уроке математики ты разделив 1234 / 10 записал бы в ответ 123,4. А здесь в яве просто 123 без дробной части. И так крутим цикл пока от введенного числа не останется 0, когда это случится по условию цикла он (цикл) завершит работу.
Alex
Уровень 15, Киев
9 сентября 2021, 06:31
нагуглил прикольную переборочку потом наш if - else, проверку на четность, вставить в средину переборки. и вуаля, функциона бэнэ))
Светлана Семенова
Уровень 7, Санкт-Петербург, Россия
29 июля 2021, 12:41
Кто-нибудь решал с for?
Павел Соловьёв докер - механизатор в Порт
5 августа 2021, 21:52
1 while + 2 for + массив чисел ) было познавательно .
Anonymous #1396846
Уровень 22
6 января, 19:04
Да, for + массив творят чудеса)