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

  • 10
  • Недоступна
Давайте определим, сколько четных цифр, а сколько нечетных в числе, введенном с клавиатуры. Если число делится без остатка на 2 (т. е. остаток равен нулю), значит оно четное. Увеличиваем на 1 счетчик четных цифр (статическая переменная even). Иначе число нечетное, увеличиваем счетчик нечетных цифр (статическая переменная odd).
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (540)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Виктор6 уровень, Санкт-Петербург
позавчера, 14:12
Пришлось гуглить, больше всего понравилось решение с charAt: 1. Создаём переменную типа String, в которую записываем вводимое с клавиатуры число. 2. Затем запускаем цикл for, который пройдётся по всей длине строки: for (int i = 0; i < input.length(); i++) 3. Внутри цикла проверка, если на данной итерации число делится на 2 без остатка то инкрементим чётный счётчик, иначе нечетный. 4. После цикла выводим результат на экран. 5. Всё получится! -- Канал в телеге про Java и Android, в котором есть книги для скачивания, статьи, видеоуроки, чат для обмена знаниями и моральной поддержки : ) Давайте учиться вместе: @LetsCodeIt p. s. Мой личный телеграм канал вкатывальщика в прогерство: @SefoNotasi
Pi Pa10 уровень, Уфа
7 сентября, 05:09
А у меня вот так получилось. Но деление на 10 и на 2 выглядит изящнее. Просто я сразу поставил себе задачу разобрать число на знаки, а потом уже определять какие из них чётные а какие нет.
String userIn = read.readLine();
    int length = userIn.length();
    for (int i = 0; i < length; i++){
        int x = Integer.parseInt(userIn.substring(i, (i + 1)));
Копуша8 уровень, Санкт-Петербург
31 августа, 21:52
Вроде как то так) прокомментируйте пожалуйста
Георгий Земан8 уровень, Екатеринбург
4 сентября, 11:18
Странно что это решение считается правильным, ведь оно не соответствует условию...
Денис9 уровень, Санкт-Петербург
5 сентября, 15:08
мне кажется, он не будет корректно работатъ для введенных чисел, кратных 10ти
Cypriiz9 уровень
20 августа, 18:44
Не мог понять почему задача не решается, потом увидел, что переменные even и odd уже присвоены в начале класса :DDDD
Артем8 уровень, Маунтин Вью
18 августа, 06:12
Решил почарным перебором введенного текста, вытаскиванием интовых значений через getNumericValue() и последующей их простой проверкой на чет/нечет через if (там же и увеличивался каунтер). Просто и быстро, но требует знания/гугления матчасти. Вот за такие задачи и люблю JR.
Vlad10AF14 уровень, Краснодар
5 сентября, 20:38
так же делал, и у меня компилятор говорит что ок, а джаварашевский валидатор не пропускает))
Григорий 7 уровень, Москва
17 августа, 19:02
Напишу о своей "боли" ибо подгорает! Долго мучился с этой задачей. Особенно, когда до этого шло всё относительно легко и просто. Злой что ппц. полностью обматюгался, просмотрел комментарии,не понял, отчаялся, бросил. Вернулся к задаче и комментариям. 1) массивы не проходили. 2) как определить длину строки не в курсе. 3) делать с тысячей ифоф отказывался. Логический на первый взгляд универсальный вариант: 1) считать посимвольно; 2) определить является ли символ числом; 3) каждый символ-число проверить на остаток; 4) записать в переменные 5) всё через циклы Но по факту только заморочил себя из этого подхода, т.к. трудно оперировать тем, что ещё не изучал, а тру-гугл-программист из меня ещё не созрел. в итоге проверил через "систем" метод s.lenght(); убедился, что работает и пошёл по математическому пути, используя все дыры-условия решения задачи. 1) считываю 2) перевожу строку в int 3) цикл for по количеству длины строки. 4) условие остатка в чёт/нечет И ТУТ ВНИМАНИЕ! ПЕРЕМЕННЫЕ УЖЕ СОЗДАНЫ!!! ИМИ ПОЛЬЗУЕМСЯ, ИХ И ВЫВОДИМ. (Да, caps специально для таких как я, которые на проверку убили 7 попыток, 4 из которых именно эти переменные) 5) просто делим число т.к. int работает без остатка. n=n/10 6) System.out. ВСЁ
yabes13 уровень, Москва
19 августа, 19:22
Задачу можно решить, используя только "% 10" и "/ 10". В первом случае ты получаешь каждый раз последнюю цифру в числе, а во втором случае отбрасываешь последнюю цифру в числе. Нужно в цикле сначала получать последнюю цифру, проверить, четная она или нечетная, а потом отбросить от числа последнюю цифру и т.д.
Александр7 уровень, Екатеринбург
15 августа, 12:49
Всем привет! Задача понравилась. Пришлось немного погуглить. Решил через массив чаров, может кому пригодится: 1. Считываем наше число ( не делать Integer, оставить строку ) 2. Создаем массив чаров и преобразуем нашу строку. ( to CharArray ) 3. Используем цикл for. Пробегаемся по длине массива ( i < переменная.length ) 4. Внутри цикла делаем проверку на четность по каждому символу массива (переменная [i] % 2== 0) 5. В зависимости от четности или нечетности увеличиваем счетчики odd и even. 6. Выводим результат : System.out.println("Even: " + even + " " + "Odd: " + odd);
Алексей7 уровень, Зима
среда, 00:43
Тоже сначала первой мыслю было строку загнать в массив, а потом перебрать каждый символ, перевести в инт, проверить на четность/нечетность. Но погуглив, понял,что объект String как раз и состоит из массива Charов. И доступ к элементам этого массива происходит через метод charAt
Дмитрий Никулин9 уровень, Старый Оскол
14 августа, 19:45
Задача принята, но мне кажется это не совсем верное решение (а конкретно условие в while) upd. все верно т.к. это тип int
while (a > 0) {
    		if ((a%10)%2==0) even++;
    		else odd++;
    		a = a/10;
    	}
Evgeny Sanych11 уровень, Кемерово
31 августа, 05:21
отличный вариант решения. не сразу додумался
Виталий 7 уровень
1 сентября, 22:35
Дмитрий,подскажите мне пожалуйста,зачем a/10? Я над этим голову ломаю до сих пор сижу)))
Дмитрий Никулин9 уровень, Старый Оскол
2 сентября, 07:18
Для того чтобы в следующем проходе цикла работать с цифрой слева. Ну например, 84597/10 = 8459.7 и в следующий раз в цикл while будет входить 8459 (.7 откидывается т.к. это тип int).
canny15 уровень, Шадринск
2 сентября, 16:41
если уж совсем до совершенства довести:
a /= 10;
Daria9 уровень, Екатеринбург
14 августа, 10:54
Хз как получилось, но оно работает 😆 Код выглядит небольшим, но - чую - не очень понятен будет, если вернуться к нему через некоторое время... Единственное, не понимаю, почему люди делают 20-30 попыток (валидацию не проходят), когда можно воспользоваться проверкой кода и нажимать "Проверить задачу" только после того, как самостоятельно код проверил и убедился, что оно работает и удовлетворяет условию (глазками прочитал)
Nuby13 уровень, Москва
12 августа, 08:13
самый простой способ. никакой математики, логарифмов, округлений со степенями и разрядами. 1. число преобразовать к строке 2. создать char[] arr и в цикле заполнить его строка.charAt(i) 3. пробежаться по массиву и проверить четность элементов, увеличивая счетчики.