Самые-самые

  • 10
  • Недоступна
Игры со списками в Java очень популярны. А всё потому, что это просто и интересно. Присоединяйтесь! В этой задачке создаем список строк. Затем — добавляем в него 10 строчек с клавиатуры. Самое интересное — определяем, какая строка в списке встретится раньше: самая короткая или самая длинная. Если таких строк несколько, учитываем самые первые из них.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (452)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Axsell
10 уровень, Москва
21 февраля, 04:15
Очень много времени убил на то что бы понять условие задачи)))В нашем уже любимом списке (изменил порядок слов) самая коротка строка "сын", а самая длинная "программа". Пробегаем от нулевого элемента к девятому и оказывается что длинная строка в списке стоит раньше короткой, ее и надо вывести. 0.машина 1.дедушка 2.коты 3.собака 4.программа 5.бабушка 6.папа 7.мама 8.сын 9.дочь
Николай
23 уровень
17 февраля, 14:57
Чтобы узнать индекс элемента в ArrayList рекомендую использовать метод indexOf, который возвращает индекс (номер) элемента из ArrayList Например, В переменной такого вида String shortest= list.get(0); в дальнейшем после работы цикла будет присвоен другой элемент массива, а как узнать его индекс? Очень просто int index = list.indexOf(shortest);
Anonymous #2497433
23 уровень
27 января, 20:41
самое простое решение - легче всего 1) создаем лист 2) вносим в него все значения 3) находим минимальное значение и его индекс 4) находим максимальное значение и его индекс 5) сравниваем индексы и выводим, то значение индекс которого меньше всего *******PROFFIT*******
Anonymous #2497433
23 уровень
27 января, 20:44
этот зверь называется сортировка выбором
new Cat("Barsik")
20 уровень, Сызрань
3 февраля, 16:25
Вот спасибо добрый человек. Понять что от тебя хотят в задании, это иногда сложнее самого задания. 🙂
Илья Азанов
9 уровень, Санкт-Петербург
11 февраля, 09:55
Можно еще проще без индексов. Мин, макс нашли и побежали циклом по списку. какое раньше значение с длиной нашли, то и вывели и потом брэйк for (String s : str) { if (s.length() == lenMin) { System.out.println(s); break; } else if (s.length() == lenMax) { System.out.println(s); break;
Yury Team Lead
14 февраля, 17:57
5 пункт. Зачем сравнивать индексы? Просто выводим строку , если встретилась строка с максимальной или минимальной длиной. прерываем цикл.
Dmitry
9 уровень, Киев
16 марта, 20:14
просто такой вариант - первое что приходит в голову новичкам (я решил её именно таким способом). П.С. да я понимаю что так код длиннее, но и Москва не один день строилась)))
Алексей Соловьев
26 уровень, Одесса
11 января, 17:11
кто хорошо шарит целесообразно было писать код с return в последнем цикле? for(int i = 0;i<10;i++){ list.add(reader.readLine()); } int minLength = list.get(0).length(), maxLength = list.get(0).length(); for(String lists : list){ if(lists.length()<minLength){ minLength = lists.length(); } } for(String lists : list){ if(lists.length()>maxLength){ maxLength = lists.length(); } } for(String lists : list){ if(lists.length() == minLength){ System.out.println(lists); return; } else if (lists.length() == maxLength){ System.out.println(lists);return; } }
Rodion
12 уровень, Мюнхен
4 февраля, 21:27
клёвое решение
Илья Азанов
9 уровень, Санкт-Петербург
11 февраля, 09:57
А зачем return? Нужен break
Алексей Соловьев
26 уровень, Одесса
12 февраля, 13:14
при return прога продолжает работать если условие выполнено а break заканчивает работу
Тимур Акматов
10 уровень
6 марта, 14:58
наоборот return останавливает работу метода, в данном случае main, а break останавливает цикл в котором он находится
Gaziz
27 уровень, Уфа
11 января, 02:02
Выводить строку, не длину строки.👨‍💻
Алексей Иванов
9 уровень, Москва
10 декабря 2020, 11:37
Прошло много времени и начал вникать: 1. Создали список и внесли данные. 2.Находим самое длинное слово и самое короткое. 3.Сравниваем их.
Dmitry Sokolov
12 уровень, Казань
7 декабря 2020, 18:09
1. Ну логично, сначала создаем список 2. Циклом вносим в него данные с клавиатуры 3. Инициализируем две переменные которым присваиваем длину первого элемента массива 4. в цикле сравниваем эти переменные со следующими элементами массива и выясняем самый короткий и самый длинный элемент 5. Затем в новом цикле ставим условие: текущий элемент равен самому короткому или текущий элемент равен самому длинному - как только условие достигнуто выводим данные элемент списка. выходим из цикла. Не пишу код - думаю что смысл изучать именно синтаксис.. Поэтому как могу описываю алгоритм) кому помогло ставьте плюсик)
Ю С
13 уровень, минск
8 декабря 2020, 14:00
круто, спасибо, все получилось. в последнем условии после вывода строки надо помнить про оператор break, чтобы выйти из цикла, как только условие выполнится, а не проходить по всему списку.
Максим Ермола
10 уровень, Минск
14 января, 21:00
а я всё усложнил, пытался сделать через счетчики, и что-то валидатор не принимал(
Sergey Bizinow DevOops в Devexperts
30 ноября 2020, 01:00
Если забежать в гугл и посмотреть как можно отсортировать ArrayList, то найти минимальную и макс длинну строки будет гораздо проще, зачем усложнять себе жизнь 😁
selfer IllegaArgumentException в вашей программе
26 декабря 2020, 15:29
Так ведь по условию задачи нужно найти какое слово внесли в список раньше (самое длинное или самое короткое), то есть нужно сохранить порядок элементов в списке без сортировки.
Anonymous #2444473
14 уровень
27 ноября 2020, 15:25
Что нужно сделать в задаче: 1) Определить индекс самой длинной строки 2) Определить индекс самой короткой строки 3) Сравнить индексы между собой, строку с меньшим индексом (ту, которая была введена раньше) вывести на экран
Артем
18 уровень, Киев
13 ноября 2020, 14:54
Создал две переменные: int indMinLength = 0, indMaxLength = 0 (индекс строки с минимальной и максимальной длиной соответственно). Далее сразу в цикле заполнения списка сравнивал вводимые значения: если вводимая строка длиннее (list.get(i).length()) строки с индексом indMaxLength, то indMaxLength присваиваем значение i. Если короче строки с индексом indMinLength - присваиваем значение i для indMinLength. Потом сравниваем значения обоих переменных и выводим на экран строку с индексом переменной, которая меньше.
Дмитрий
8 уровень, Островец
27 ноября 2020, 23:52
А если у тебя будет несколько строк с максимальным или минимальным количеством символов??? Тогда ведь у соответствующей переменной после работы цикла будет значение индекса строки, которая была введена позже🤔
Артем
18 уровень, Киев
28 ноября 2020, 21:31
Только если использовать оператор ">=" или "<=". При использовании ">" или "<" присваиваться будет только первый нужный индекс. Например, 6 не больше (не меньше) 6, соответственно, условие присваивания не срабатывает.