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

  • 8
  • Недоступна
Представим себе, что нам нужно разделить числа по каким-то признакам. Например, по чётности или по количеству разрядов. Представили? А теперь за дело: пишем программу, которая описывает введенное пользователем число (оно должно находиться в диапазоне от 1 до 999), указывая в строке вывода, чётное ли это число и сколько в нём цифр.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (298)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
YesOn
Уровень 4, Томск, Россия
16 сентября, 05:08
Для расчёта количества знаков в числе создаём новую переменную (имя переменной может быть любым в рамках правил синтаксиса): int length = String.valueOf(num).length(); , где num - это число, ввода с клавиатуры. valueOf() - возвращает строковое представление int аргумента.
Anonymous #742345 Datatabase Developer в Megafon
17 апреля, 20:01
Добрый день. Какая у вас версия Java ?
Андрей
Уровень 15, Москва
27 февраля, 13:45
изи
Алексей
Уровень 5, Москва
22 февраля, 15:49
Сделал на if-ах (да, банально, но эталонное решение тоже). Но, вот почему-то проигнорировал else, вообще. И все работает и принимается. Много думал (на самом деле не очень).... Погуглил, почитал Обязательно-ли-использовать-else Удивился. Зачем тогда действительно else ( в конкретном случае), если даже (если верить стаковерфлоу) байт код одинаковый... Кто что знает?
Людмила
Уровень 19, Харьков, Украина
1 апреля, 13:31
Конкретно в этой задаче, если вы делаете без else, то будут проверяться все if подряд, в чём нету смысла, так как если первое условие истина (число отрицательное чётное), то остальные точно ложь. А вот else (а точнее else if) нам помогает перебирать условия и остановиться, когда попадётся нужное. Выходит мы не тратим ресурс для проверки всего подряд. Тем не менее отдельно несколько if тоже бывают нужны, это зависит от логики программы. Банальный пример: Ситуация 1. Я хочу узнать делится ли число на 100, а если нет - делится ли оно на 3:
if (a % 100 == 0)
	    	 System.out.println("делится на 100");

	     else if (a % 3 == 0)
	    	 System.out.println("не делится на 100, но зато делится на 3");
Тут - если делится на 100, то меня уже не волнует можно ли его на 3 делить. Ситуация 2. Мне важны оба результата независимо друг от друга:
if (a % 100 == 0)
	    	 System.out.println("делится на 100");

	     if (a % 3 == 0)
	    	 System.out.println("не знаю поделилось ли на 100, но на 3 точно делится");
Тут же второму if всё равно что там вышло у первого. Вывод: если сравнения не зависят друг от друга и нам надо выполнить их все - пользуемся отдельными if. Если сравнения взаимосвязаны, проверки идут по цепочке, и в какой-то момент, достигнув нужного результата, дальнейшая проверка не нужна - делаем через else
Алексей
Уровень 5, Москва
4 апреля, 18:13
Спасибо
Евгений Кудрин Android Developer
9 февраля, 16:05
Решил, но не понял почему при создании двух стрингов вначале первый инициализируется без присваивания значения (просто String s) а второй просит присвоит значение, просто String z; не проходит, пишет variable z might not have been initialized. Сделал у нее String z = new String(). если кто намекнет буду очень благодарен
Eugene Semenov
Уровень 23, Санкт-Петербург, Россия
21 января, 08:30
Integer.toString(Math.abs(num)).length() - еще вариант получения количества цифр. Модуль для избавления от минуса
Balthazar Java Developer
18 апреля, 06:30
Как раз искал, как кратко посчитать символы в числе без циклов, пришлось немного потанцевать с бубном😅
String num = reader.readLine();
int num2 = Integer.parseInt(num);
int count = num.length();
Eugene Semenov
Уровень 23, Санкт-Петербург, Россия
21 января, 07:48
Dmitry economic security
11 января, 11:06
if (a < 10 && a > 0 && a % 2 == 0) {
           System.out.println("четное однозначное число");
и погнали дальше также
denki.karasu
Уровень 10
25 декабря 2020, 09:00
Еще можно проверить разрядность целочисленным делением: number / 10 == 0 - однозначное number / 100 == 0 - двузначное и т.д.
Тимур Акматов
Уровень 18, Бишкек, Кыргызстан
14 февраля, 13:05
нельзя, возьмите любое число, например 16 оно не пройдет
Алексей Барсуков
Уровень 5, Пермь
25 декабря 2020, 06:16
сделал короткое и удачное решение, а местный компилятор не хочет его принимать..... тем не менее, так решение более красивое: BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String number = reader.readLine(); int a = Integer.parseInt(number); int nums = number.length(); System.out.println(a > 0 && a < 999 && (a % 2) == 0 && nums == 1 ? "четное однозначное число" : ""); System.out.println(a > 0 && a < 999 && (a % 2) != 0 && nums== 1 ? "нечетное однозначное число" : ""); System.out.println(a > 0 && a < 999 && (a % 2) == 0 && nums== 2 ? "четное двузначное число" : ""); System.out.println(a > 0 && a < 999 && (a % 2) != 0 && nums== 2 ? "нечетное двузначное число" : ""); System.out.println(a > 0 && a < 999 && (a % 2) == 0 && nums== 3 ? "четное трехзначное число" : ""); System.out.println(a > 0 && a <= 999 && (a % 2) != 0 && nums== 3 ? "нечетное трехзначное число" : "");
Andrew
Уровень 5, Санкт-Петербург
7 января, 23:32
не принимает скорее всего из-за переноса строки.
Bombus
Уровень 11, Москва
27 января, 13:12
а зачем мудрить с выявлением длины, если можно просто задать a < 100 или a < 10?
Тигра
Уровень 13, Кривой Рог
24 марта, 11:59
подумай что у тебя делает программа?у тебя получается 6 выводов в консоль одновременно,но так как в 5ти у тебя нет решения для данного числа вывода не произойдет - но программа всеравно сочтет что выводов 6ть....а должен делать только 1 вывод в консоль