Описываем числа

  • 4
  • Недоступна
Представим себе, что нам нужно разделить числа по каким-то признакам. Например, по чётности или по количеству разрядов. Представили? А теперь за дело: пишем программу, которая описывает введенное пользователем число (оно должно находиться в диапазоне от 1 до 999), указывая в строке вывода, чётное ли это число и сколько в нём цифр.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (155)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Валерий Беленко6 уровень, Тольятти
4 часа назад
String res=" число"; String t1="четное"; String t2="нечетное"; String t3=" однозначное"; String t4=" двузначное"; String t5=" трехзначное"; if ((n>0)&&(n<1000)){ if (n>99) res=t5+res; else if (n>9) res=t4+res; else res=t3+res; if (n%2==0) res=t1+res; else res=t2+res; System.out.println(res); }
позавчера, 13:52
какой вариант кода более эффективен, если, как в данном случае, есть два условия: чет-нечет и количество цифр в числе? вариант 1: шесть строк if c условиями типа (a%2==0 && b==1); вариант 2: if-else определяющий чет-нечет с вложенными if проверяющими количество цифр
Permanent_Observer4 уровень, Drohobych
16 февраля, 09:59
Можна так: boolean m = (a>0 && a<=999); if (m && a<10 && a%2==0) System.out.println("четное однозначное число"); else ... и т. д.
Vutaliy Murzin8 уровень, Пермь
3 февраля, 12:29
Валидатор зачем то учитывает с какой буквы написаны слова. Если написать с большой буквы Чётное или Нечетное, решение не проходит..
Kirill8 уровень, Москва
14 февраля, 08:10
По всей видимости в тестах для этого дела забыли прописать конвертацию входных строк в нижний регистр. А может быть специально не написали, хотя это очень просто. Получается что тесту не всё равно, написано ли "Четное" или "четное". Как итог, он сваливается. По мне это странно и только отвлекает, я с этим столкнулся в другой задаче, когда написал с большой буквы и не понял сначала почему оно заругалось. Понимаю когда в программах для изучения немецкого языка может заругаться если существительное написать с маленькой буквы, а по правилам языка они пишутся с большой. Такое сам видел, но там хотя бы смысл ясен - вырабатывают у людей привычку сразу писать правильно.
Vladimir Tokarev11 уровень, Kurgan
27 января, 09:07
static boolean chetnoe(int a){ return a%2==0; } BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); int a = Integer.parseInt(reader.readLine()); if(a>0 & a<10 & chetnoe(a)){System.out.println("четное однозначное число");} if(a>0 & a<10 & !(chetnoe(a))){System.out.println("нечетное однозначное число");} if(a>9 & a<100 & chetnoe(a)){System.out.println("четное двузначное число");} if(a>9 & a<100 & !(chetnoe(a))){System.out.println("нечетное двузначное число");} if(a>99 & a<1000 & chetnoe(a)){System.out.println("четное трехзначное число");} if(a>99 & a<1000 & !(chetnoe(a))){System.out.println("нечетное трехзначное число");}
Евгений5 уровень, Санкт-Петербург
28 января, 20:18
интересно, это работает?
Vladimir Tokarev11 уровень, Kurgan
29 января, 06:52
работает
Сергей4 уровень, Пермь
19 февраля, 09:20
можно было бы и для нечетного числа создать метод)
Сергей Цехмистренко5 уровень, Минск
понедельник, 12:14
Вопрос в том, зачем целый метод писать? по сути ты это пишешь столько же, сколько будешь дописывать (a%2==0) к каждому if. Короче, как мне кажется это не сильно упрощает код. Но это лишь мое мнение)
Ruslan7 уровень, Москва
15 января, 19:14
Подскажите , я прописывал сколько знаков у числа через конструкцию: String number = reader.readLine(); int number1 = Integer.parseInt(number); int len1 = number.length(); ну и дальше в if и else if уже условия В общем у меня вопрос можно ли каким то образом обойтись без строчки String number = reader.readLine(); в данном случае ведь .length(); считает только длину строки. но не длину числа или тогда уже нужно решать другим методом без .length();?
Chingiz12 уровень
28 января, 14:31
Погуглил. Возможно посчитать длину посредством
int len1 = String.valueOf(number1).length();
или же
int len1 = Integer.toString(number1).length();
и соответственно можно будет обойтись без переменной
String number
.
HTS4 уровень, Тюмень
29 января, 17:28
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int x = Integer.parseInt(reader.readLine());
Только, с такой конструкцией уже нельзя использовать length(). Лучше просто задать интервал в условии if, я думаю.
Роман7 уровень, Нижний Новгород
8 января, 10:58
я не слишком сильно заморочился, а то смотрю некоторые чуть ли не в две строки решают?
Vad9 уровень
17 января, 23:05
В этих кодах ошибка в условиях при определении количества знаков в введённом числе: при делении двух любых положительных чисел результат всегда будет больше нуля.. Нужно сравнивать с 1, а не 0..
Константин10 уровень
3 января, 14:31
не понимаю почему не проходило валидацию с переменной short? с интом уже проходит ведь в условии не сказано как ограничить диапазон вводимых значений, почему тогда инт,а не лонг
Антон8 уровень, Санкт-Петербург
28 декабря 2019, 01:45
У меня получилось решить с 7 условиями if. Возможно ли решить с 4?
Maksym Rado24 уровень, Тернополь
27 декабря 2019, 15:12
public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int a = Integer.parseInt(br.readLine());
        if (a>0&&a<1000) {
            System.out.println(a > 0 && a < 10 && a % 2 == 0 ? "четное однозначное число" : a > 0 && a < 10 && a % 2 != 0 ? "нечетное однозначное число" : a > 9 && a < 100 && a % 2 == 0 ? "четное двузначное число" : a > 9 && a < 100 && a % 2 != 0 ? "нечетное двузначное число" : a > 99 && a < 1000 && a % 2 == 0 ? "четное трехзначное число" : a > 99 && a < 1000 && a % 2 != 0 ? "нечетное трехзначное число" : "тут нет разницы что написать" );
        }
    }
Сначала не мог понять как сделать, что бы программа не реагировала на другие числа. Потом добавил диапазон через if и через тернарный оператор прописал все нужные условия. Может кому поможет
Дмитрий Доломанюк7 уровень, Брест
25 января, 21:29
читабельность такой строки совсем не ахти
Maksym Rado24 уровень, Тернополь
25 января, 22:26
Ну как сказать... Можно просто с переносами строки сделать и будет точно не хуже, чем писть овермного if'ов. Но тут как все равно дело вкуса каждого.
Chingiz12 уровень
28 января, 14:43
А если бы вводные условия были от -∞ и до +∞? Тогда без if-оф боюсь никак.
Permanent_Observer4 уровень, Drohobych
16 февраля, 09:57
Можна так boolean m = (a>0 && a<=999); if (m && a<10 && a%2==0) System.out.println("четное однозначное число"); else ... и т. д.