package com.javarush.task.task06.task0606;
import java.io.*;
/*
Чётные и нечётные циферки
*/
public class Solution {
public static int even;
public static int odd;
public static void main(String[] args) throws IOException {
even = 0;
odd = 0;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
/*String a = reader.readLine();
for(int i = 0; i < a.length(); i++){
}*/
int a = Integer.parseInt(reader.readLine());
int temp;
for(int i = 10; (float)a / i >= 0.1f; i *= 10){
temp = a / i;
float x = (float) a / i;
float b = Math.abs(x - temp);
if(b == 0)
System.out.println(b);
else if((int)(b * 10) % 2 == 0)
even++;
else
odd++;
}
/*int a = Integer.parseInt(reader.readLine());
int b;
for(int i = 10; (float)a / i >= 0.1f; i *= 10) {
b = a % i;
if (b == 0)
System.out.println(b);
else if (b % 2 == 0)
even++;
else
odd++;
}*/
System.out.println("Even: " + even + " Odd: " + odd);
}
}
При первом делении (т.е. крайней цифры), например: 13, 23 и некоторые другие числа при делении из 3 получается 2999999...
P.S. Не обращайте внимания на комменты)Ihor
18 уровень
Как получать точные значения в вещественных числах?
Решен
Комментарии (12)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Дмитрий
7 августа 2019, 01:19
Получай в String str данные с клавиатуры и циклом по каждому символу
+1
Дмитрий
7 августа 2019, 01:16
for (int i = 0; i < str.length() ; i++) {
if(str.charAt(i)%2 == 0) even++;
else odd++;
+1
Дмитрий
7 августа 2019, 01:15
Там же не нужно Float
0
Ihor Full Stack Developer
3 августа 2019, 11:42решение
+2
dionisis2010
2 августа 2019, 22:38
оператор % возвращает остаток от деления
видео
для получения целой части приводите результат к целочисленному типу данных, тогда дробна отбросится
и для общего развития рекомендую посмотреть первые 15 минут 0
Ihor Full Stack Developer
3 августа 2019, 09:54
Вот:
0
dionisis2010
3 августа 2019, 10:13
и что эта строка должна делать по вашему?
0
Ihor Full Stack Developer
3 августа 2019, 10:48
она берет остаток от деления, выделяет целую часть и проверяет на четность
пример: b = 0.3924; b * 10 = 3.924; (int) b = 3; 3 % 2 == 0 ? false
0
dionisis2010
3 августа 2019, 13:18
1. в условиях этой задачи рассматриваются исключительно целые числа, там четность проверется изи
2. вещественное число не может быть четным или не четным по определению
3. я не уверен что вы правильно поняли условие, раз начали использовать float, перечитайте внимательней
4. эта строка бесполезна
переносит один разряд из дробной части в целую, отбрасывает дробную, и проверяет на четность, но где это может понадобиться я не знаю, точно не в этой задаче 0
Ihor Full Stack Developer
3 августа 2019, 20:50
Условия задачи я прекрасно понял и уже ее решил. Боюсь вы просто не вникали в реализацию и тем более не запускали, дабы понять суть проблемы
0
dionisis2010
3 августа 2019, 21:13
та реализация которую вы пытались сделать изначально была не удачной потому что использовала вещественные числа (хотя тут можно обойтись и без них), что влечет за собой вероятность багов (об этом в видео, которое я скинул), поэтому я и не пытался особо в нее вникать (смысл)
ну а раз вы довели до ума этот метод, погу только порадоваться вашим успехам))
0
Ihor Full Stack Developer
4 августа 2019, 09:36
благодарю
0