Давайте померяемся строками! А заодно и задачку решим по программированию: создадим список строк, считаем с клавиатуры 5 штук и добавим их в список. Затем с помощью цикла найдем из списка самую длинную строку (или несколько, если она такая не одна). Страна должна знать своих героев: самые длинные строки будут выведены на экран.
Самая длинная строка
- 10
- Недоступна
Комментарии (548)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий вы должны авторизоваться
MaxGideon 7 уровень, Москва
1 марта, 10:39
Хм ...
1) с помощью цикла, вложенного цикла и временной переменной отсортировал элементы списка по длине от большего к меньшему
2) вывел на экран первый элемент с индексом 0 как самый длинный
3) в новом цикле сравнил длину остальных элементов с первым и вывел на экран элементы длинна которых равно первому
0
Святослав 7 уровень, Одесса
20 февраля, 17:57
Ну вот опять
![]()

+1
Alex 8 уровень, Москва
12 февраля, 18:44
1. Создаем ArrayList
2. Пишем первый цикл на его заполнение. for (int i = 0; i < 5; i++)
3. Вводим пустую переменную (max = 0), куда запишется максимальное число знаков среди всех имеющихся строк после прогона цикла из пункта 4.
4. Пишем второй цикл for (int i = 0; i < ИмяСписочногоМассива.size(); i++) на поиск максимального числа знаков среди всех имеющихся строк (используем метод length() в виде такой конструкции ИмяСписочногоМассива.get(i).length(); для поиска кол-ва знаков в текущей строке).
Внутри второго цикла пишем условие, что если наше текущее значение переменной (max) меньше, чем значение знаков в текущей строке, то наша переменная (max) обновляется новым значением (max = ИмяВашейПеременнойДляКолваЗнаковТекущейСтроки.
///В нашем случае после 5 итераций (тк 5 строк), цикл завершается и на выходе мы имеем наше финальное значение переменной (max).
5. Пишем третий цикл, первая половина которого совпадает со вторым циклом (т.к. теперь нам снова надо пробежаться по всем строкам и понять сколько знаков в какой строке имеется), но единственное, что мы меняем, так это условие внутри цикла. Поскольку нам уже известно максимальное кол-во знаков среди всех строк (max). Мы пишем условие, что если число знаков в текущей строке совпадает с нашим максимальным (max), то мы выводим данную строку в консоль всем известной командой c аргументом следующего вида .....(ИмяСписочногоМассива.get(i));
6. ???
7. PROFIT
p.s. Мною везде был указан индекс i, вы можете выбрать любую другую букву.
+1
Alex Belkin 7 уровень
3 марта, 09:00
Сделал практически так же, только не считал количество знаков а сравнивал значения элементов массива. К тому же в твоем решении, самая первая выведенная строка будет дублироваться при сравнении элементов массива с ней же(ведь она осталась в массиве). Это решил через условие со сравнением индекса элемента.
0
Дмитрий 9 уровень
8 февраля, 18:08
Че это такое for (String string : strings) ???? Как это выражение понять???
0
iDSDDR 10 уровень
10 февраля, 16:03
Обычный такой цикл for each.
Вот тут подробно рассказано, как это работает
0
Иван 7 уровень
5 февраля, 09:16
Решил по-другому.
Создал еще один ArrayList для записи результатов.
Если длина нового слова превышает длину предыдущего максимального, то этот ArrayList очищается и добавляется новый элемент, если длина равна - просто добавляем в него новый элемент, без очистки.
+1
Asankheya 9 уровень, Mainframe
3 февраля, 19:36
кто-нибудь может разжевать это? как использовать такую укороченную запись?
for (String string : strings) {
if (string.length() == maxStringLength) {
System.out.println(string);
0
Леонид 13 уровень, Санкт-Петербург
4 февраля, 12:57
Это for each цикл на JavaRush про for each не рассказывали.
В данном случае мы инициализируем переменную String string и в цикле присваиваем ей значения из нашего листа строк strings. Дальше обычный if в котором мы берем длину нашей текущей строки (string.length()) (которую на текущей итерации получили из нашего списка strings) и сравниваем с уже известной maxStringLength) , и если они равны то мы выводим значение текущей строки System.out.println(string);
И так цикл будет повторятся пока у нас не закончатся элементы листа strings.
+1
Asankheya 9 уровень, Mainframe
4 февраля, 13:36
огромное спасибо!!
0
Yunona_st 10 уровень, Нижний Новгород
2 февраля, 16:00
Подскажите, пожалуйста, кто знает, как в первом цикле для считывания строк, можно было бы указать длину цикла, если мы заранее не знаем, сколько строк надо считать? Ну если надо считать столько, сколько их написано в консоли?
Вот так не получается:
for(int i = 0; i < strings.size();i++){
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
strings.add(reader.readLine());
0
new Cat("Barsik") 17 уровень, Сызрань
3 февраля, 12:51
Можно попробовать через бесконечный цикл while(true) и описать условие выхода из него.
Например если ввели слово "стоп" то чтение прекращается.
0
Yunona_st 10 уровень, Нижний Новгород
4 февраля, 13:13
Теперь поняла, спасибо)
0
Igor 11 уровень, Минск
11 февраля, 19:41
Не нужно объявление переменной ввода с клавиатуры ставить в цикл. И вообще не стоит то что объявляется один раз вставлять в цикл и перезаписывать циклом.
0
Yunona_st 10 уровень, Нижний Новгород
12 февраля, 10:16
Да, об этом не подумала. Спасибо.
0
Rustam 9 уровень
28 января, 06:09
Хорошая задачка, внимательность повышает. Если не выполняются первые 2 пункта, знайте что Array List уже объявлен, нужно только его проинициализировать.
0
Dmitry Panchenko 15 уровень, Москва
19 января, 10:30
В первом цикле, при вводе, сразу вычисляем самую длинную строку и храним в переменной -(max_str_length).
Во втором цикле, выводим только те строки, которые по длине равны max_str_length.
+1
Alaraf1 11 уровень, Киев
13 января, 13:11
первое условие может кому-то поможет
strings = new ArrayList<String>();
+3
олеся Software Developer
22 января, 10:52
спасибо большое.а то задачу решила а эту проверку с инициализацией все пройти не могла.
+1
7Angel 7 уровень, Харьков
7 февраля, 14:36
О помог спасибо, не понимал что хотят
0