Самая длинная строка

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