Самые-самые

  • 10
  • Недоступна
Игры со списками в Java очень популярны. А всё потому, что это просто и интересно. Присоединяйтесь! В этой задачке создаем список строк. Затем — добавляем в него 10 строчек с клавиатуры. Самое интересное — определяем, какая строка в списке встретится раньше: самая короткая или самая длинная. Если таких строк несколько, учитываем самые первые из них.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (439)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Алексей Соловьев 10 уровень, Одесса
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; } }
Gaziz 10 уровень, Уфа
11 января, 02:02
Выводить строку, не длину строки.👨‍💻
Алексей Иванов 9 уровень, Москва
10 декабря 2020, 11:37
Прошло много времени и начал вникать: 1. Создали список и внесли данные. 2.Находим самое длинное слово и самое короткое. 3.Сравниваем их.
Dmitry Sokolov 9 уровень, Казань
7 декабря 2020, 18:09
1. Ну логично, сначала создаем список 2. Циклом вносим в него данные с клавиатуры 3. Инициализируем две переменные которым присваиваем длину первого элемента массива 4. в цикле сравниваем эти переменные со следующими элементами массива и выясняем самый короткий и самый длинный элемент 5. Затем в новом цикле ставим условие: текущий элемент равен самому короткому или текущий элемент равен самому длинному - как только условие достигнуто выводим данные элемент списка. выходим из цикла. Не пишу код - думаю что смысл изучать именно синтаксис.. Поэтому как могу описываю алгоритм) кому помогло ставьте плюсик)
Ю С 13 уровень, минск
8 декабря 2020, 14:00
круто, спасибо, все получилось. в последнем условии после вывода строки надо помнить про оператор break, чтобы выйти из цикла, как только условие выполнится, а не проходить по всему списку.
Максим Ермола 8 уровень, Минск
14 января, 21:00
а я всё усложнил, пытался сделать через счетчики, и что-то валидатор не принимал(
Sergey Bizinow DevOops в Devexperts
30 ноября 2020, 01:00
Если забежать в гугл и посмотреть как можно отсортировать ArrayList, то найти минимальную и макс длинну строки будет гораздо проще, зачем усложнять себе жизнь 😁
selfer рабочий в на работе
26 декабря 2020, 15:29
Так ведь по условию задачи нужно найти какое слово внесли в список раньше (самое длинное или самое короткое), то есть нужно сохранить порядок элементов в списке без сортировки.
Anonymous #2444473 14 уровень
27 ноября 2020, 15:25
Что нужно сделать в задаче: 1) Определить индекс самой длинной строки 2) Определить индекс самой короткой строки 3) Сравнить индексы между собой, строку с меньшим индексом (ту, которая была введена раньше) вывести на экран
Артем 12 уровень, Киев
13 ноября 2020, 14:54
Создал две переменные: int indMinLength = 0, indMaxLength = 0 (индекс строки с минимальной и максимальной длиной соответственно). Далее сразу в цикле заполнения списка сравнивал вводимые значения: если вводимая строка длиннее (list.get(i).length()) строки с индексом indMaxLength, то indMaxLength присваиваем значение i. Если короче строки с индексом indMinLength - присваиваем значение i для indMinLength. Потом сравниваем значения обоих переменных и выводим на экран строку с индексом переменной, которая меньше.
Дмитрий 8 уровень, Островец
27 ноября 2020, 23:52
А если у тебя будет несколько строк с максимальным или минимальным количеством символов??? Тогда ведь у соответствующей переменной после работы цикла будет значение индекса строки, которая была введена позже🤔
Артем 12 уровень, Киев
28 ноября 2020, 21:31
Только если использовать оператор ">=" или "<=". При использовании ">" или "<" присваиваться будет только первый нужный индекс. Например, 6 не больше (не меньше) 6, соответственно, условие присваивания не срабатывает.
Skanta 17 уровень, Ростов-на-Дону
9 ноября 2020, 10:41
Решается по аналогии с прошлыми задачами на минимум/максимум через длину массива. 1. Создал массив, закинул в него значения. 2. Задал переменные int min = 100000 (или же длину первого элемента массива, если боитесь, что может быть длина строки больше, чем 100000 :) ) && int max = 0. 3. Прогнал через цикл весь массив, используя условие сравнения длины массива и переопределил max && min. 4. Перебираем массив до первого совпадения (if длина элемента массива == max || длина элемента массива == min). При первом совпадении пишем sout + break. На мой взгляд это самый простой способ без применения циклов форич.
Арт Алексей 9 уровень
17 октября 2020, 05:36
Сделал с первого раза. Создал в начале 4 переменные int maxLength = 0; int minLength = Integer.MAX_VALUE; int maxInd = 0; int minInd = Integer.MAX_VALUE; Далее циклы: первым заполнил массив. Во втором цикле сделал два два условия if (важно цикл запустить в обратную сторону массива): одно искало максимальную строку, и длину ее сохраняло в maxLength, а индекс ячейки в maxInd, параллельно такой же поиск проводился на минимальную строку. Следующим шагом сравнивал maxInd c minInd, и с тем индексом который был меньше выводил строку на экран.
Ivan Shcherabakov 16 уровень, Минск
15 октября 2020, 11:18
Писал сам. Может не очень красивый код, но всё-таки(в конце концов я учусь). 1. Создал два списка. Один String, второй Integer. 2. Создал цикл для заполнения списков. В первый помещались строки, во второй длинна строки. 3. Создал две переменные для определения максимума и минимума. И присвоил им значения MIN_VALUE и MAX_VALUE. Создал цикл на определения максимальной и минимальной строки. 4. Создал цикл с условиями: если строка в цикле равна мин, то вывести ее на экран и завершить цикл(break;). Второе условие, если строка равна максимуму - вывести на экран и завершить работу цикла(break);