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