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

  • 10
  • Недоступна
Давайте определим, сколько четных цифр, а сколько нечетных в числе, введенном с клавиатуры. Если число делится без остатка на 2 (т. е. остаток равен нулю), значит оно четное. Увеличиваем на 1 счетчик четных цифр (статическая переменная even). Иначе число нечетное, увеличиваем счетчик нечетных цифр (статическая переменная odd).
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (469)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Eliyahu Ostrovsky6 уровень
час назад
while (number > 0) { check = number % 2; if (check == 0) even++; else odd++; number = number / 10; }
Verhun Kyrylo7 уровень
воскресенье, 18:25
Хотелось сделать через массив, хоть еще и не учили его. Если кто хочет сделать через массив то вам понадобится метод каким можно из строки сделать массив символов
char[] myArray = say.toCharArray();
И второй метод что бы преобразовать символ в число.
int y = Character.getNumericValue(a);
Grigory Filiptsov7 уровень, Воронеж
пятница, 23:17
Сначала решил, а потом понял, как отптимизировать решение. Все просто. Проверяем число (не последнее, а общее), делится ли без остатка на 2 - если да, то even++; если нет то odd++; затем делим на 10 и обрубаем остаток. И далее та же схема столько раз сколько надо) итого 1 while и 1 if!
Mihail Klimenko9 уровень, Краснодар
17 мая, 13:37
Сделал через 1 while() и два if()
Alex8 уровень, Варшава
16 мая, 08:23
1. Пока число БОЛЬШЕ нуля проверка). 2. Любое (число % 10) вернет последнюю цифру этого числа. Пример -> 4445 % 10 = 5 -> нашли последнее число. Сразу проверяем найденное число четное оно или нет; - можно одной строкой (x%10)%2 3. Если НЕ четное -> else 4. Чтобы найти второе число с конца -> делим число на 10 и проходим петлю еще раз. (4445/10==444.5 -> но ведь у нас интеджер - значит 444 -> запуск петли еще раз(шаг 2,3,4- и так пока не проверим все числа)) ------------------------------------------------------- Проверяем последнее число и делим введенное число на 10, что-бы отбросить число прошедшее проверку.
Георгий11 уровень, Москва
10 мая, 12:57
К сожалению до красивого решения через простую арифметику не додумался, и получил вот такой изврат: 1) считываю число с клавиатуры. сразу отсекаю "-", если введенное число отрицательное 2) с помощью length() определяю длину текстового представления числа - переменная int len. 3) бегу циклом for до тех пор пока новая переменная i меньше len 4) в каждой итерации, через substring беру символ от введенного числа с позиции i до позиции i+1. Стандартно проверяю его делимость на двойку. Итераций столько же, но код загроможден текстовыми функциями..
nikolay7 уровень
9 мая, 07:49
Немного теории: "когда операция деления применяется к целочисленному типу, дробная часть теряется." Сделал так("кусок" кода) while(x > 9) { if (x%2 == 0) even++; else odd++; x = x/10; if (x < 10) break; } if ((x%2) == 0) even++; else odd++; и вроде все нормально, но потом подумал, если в первой строке икс больше ноля сделать, а в строке с "break" икс равен 0, то последние две строчки не нужны??
Garadzienski15 уровень, Kraków
3 мая, 19:15
Не знаю, насколько это правильно. 1) Сначала считал с клавиатуры строку. 2) Потом добавил переменную, которая считывает длину введённой строки. 3) Далее новая переменная number, которая преобразовывает String в int. 4) Цикл for( int i = 0; сравниваем i с длиной строки, i++) { 5) if если остаток от деления number на 2 == 0, то увеличиваем even. 6) else увеличиваем odd. 7) number приваиваем новое значение, разделив его на 10.} 8) sout за пределами цикла for.
Alexander Chevtaev16 уровень, Bogorodsk
29 апреля, 14:35
.toCharArray() разбиваем введенную строку на символы и пишем в массив.
Рустам7 уровень, Екатеринбург
22 апреля, 15:09
Не проходит валидацию последний пункт, уже перепробовал море разных вариантов, кто сталкивался?
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
double number = Double.parseDouble(reader.readLine());
        if (number < 0)
        number = - number;
        for (; number > 1; ){
            number = (int) number;
            if (((number % 10) % 2) == 0)
                Solution.even++;
             else
                Solution.odd++;
            number /= 10;
        }
        System.out.println("Even: " + even + " Odd: " + odd);
    }
}
Alena12 уровень, Halifax
28 апреля, 14:28
change Solution.even++ into even++ and Solution.odd++ into odd++. Cause it is a static variable.