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

  • 10
  • Недоступна
Давайте померяемся строками! А заодно и задачку решим по программированию: создадим список строк, считаем с клавиатуры 5 штук и добавим их в список. Затем с помощью цикла найдем из списка самую длинную строку (или несколько, если она такая не одна). Страна должна знать своих героев: самые длинные строки будут выведены на экран.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (577)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ramil
Уровень 13
12 июля, 15:06
Если немного трудно понять что да как, после просмотра правильного решения, то вот тут чувак разбирает задачу, после него понял как все работает) смотрите с 9 минуты. Тык
RomanGV
Уровень 26, Россия
15 июня, 19:41
покрутил коменнты, вроде такого не было. Создал второй список и "отфильтровал" в него самые длинные строки.Дальше остается просто вывести этот список. мож кому пригодится)))
int maximalLength = 0;
for (String value :
        strings) {
    if (value.length()==maximalLength) {
        biggestStrings.add(value);
    }
    if (value.length() > maximalLength) {
        biggestStrings.clear();
        biggestStrings.add(value);
        maximalLength = value.length();
    }
}
Евгений
Уровень 9
6 мая, 16:55
Если при вводе строк сразу искать самую длинную строку, то задачу можно решить в два цикла,
Ирина
Уровень 8, Полтава, Украина
6 февраля, 17:13
Кто может объяснить комбинацию: for (String string : strings)
Павел Соловьёв докер - механизатор в Порт
22 февраля, 04:13
Расширенный цикл for работает следующим образом. В расширенном цикле for происходит последовательный перебор всех элементов коллекции или массива. Количество итераций цикла равна количеству элементов в коллекции или массиве. На каждой итерации значение элемента массива помещается в итерационную переменную variable(в вашем случае sting), которую можно обрабатывать или использовать. Цикл гарантирует прохождение всей коллекции (массива) от первого элемента до последнего. еще раз , это цикл for в котором как переменная используется "String peremennaya" которая проходит по всей коллекции/массиву ": massiv" .
528
Уровень 15
11 апреля, 18:46
не поверите, но тоже самое хотел спросить после сверки с решением этой задачи, я думал я один пропустил эту тему :) а её похоже не было
Elidriel
Уровень 35, Воронеж
27 ноября 2021, 12:25
в принципе легко.. в три цикла: 1) первый заполняет массив; 2) второй проходит по всему массиву (foreach очень удобен для этого) и операцией сравнения созданной переменной max с длины каждого элемента (string.length()) присваиваем переменной max длину самой длинной строки; 3) третий проходит по всему массиву (foreach очень удобен для этого) и сравниваем длину каждого элемента с полученной в предыдущем цикле максимальной длиной, если совпадает -выводим на экран.
YesOn
Уровень 9, Томск, Россия
16 декабря 2021, 14:40
Спасибо, долго мучил 4 условие задачи, Ваша схема помогла взглянуть на свой код иначе.
Andrey Ganin
Уровень 14, Воронеж
25 января, 14:14
Интересное решение, но моё мне понравилось больше))) Я решил задачу через 2 массива, сначала заполнил первый, затем что бы ошибки не было, во второй массив я добавил "" таким образом, с ним теперь можно работать, ведь строка там есть, но она содержит 0 элементов. Далее я поочерёдно сравнил длину строки второго массива с первым и если в первом массиве длинна строки больше, то второй массив мы очищаем и заносим туда новое значение. Если длинна строк совпала просто добавляем ещё одну строку. А в конце просто выводим второй массив.
Lunycat
Уровень 17, Россия
2 ноября 2021, 15:19
Надеюсь поможет :) Как сделал я: 1) Создал цикл с заполнением ArrayList ' а - это делается очень легко, надо листануть страницу назад в лекциях, там показано. 2) Создал переменную "max" типа int. Создал цикл по проверке массива, который ищет самую длинную строку в массиве, если такая находится, он приравнивает цифру(количество символов) к переменной "max". Код такой: "strings.get(i).length()". Где "strings" - наша статическая переменная типа ArrayList, ".get(i)" - вывод элемента под индексом "i", и ".length()", которая считает количество символов в этом элементе. 3) В конце цикла создал ответвление - если цикл подошёл к концу, то он переходит к новому циклу, который точно так же проверяет, этот же массив. Но его функцией является нахождение элементов, чьё количество символов == переменной "max". Если такой элемент находится, он выводится на экран. 4) ?????? 5) PROFIT!!!!!
Maksym-Andriy
Уровень 14, Львів, Україна
23 сентября 2021, 16:19
Можна ещё проще: - Написать функцию которая ищет максимально длинную строку и её индекс в массиве - Вызывать эту функцию в мэйне при условии что длина полученная при первом вызове будет равна длине при вызове второй раз и так далее(второй-третий, третий четвёртый...), при этом после каждого вызова удалять найденную строку по индексу. Описал сложно, но думаю понять должны
Vadim Zhalnin
Уровень 17
14 июля 2021, 16:28
ИМХО задача не столько сложная, сколько многозадачная по сравнению с предыдущими. 1. Прописываем массив на 5 ячеек. 2. Прописываем сканер и ввод с консоли в массив (заполняем ячейки). 3. Далее нужно найти самую длинную строку. Сортируем строки по длине. Два цикла: основной while с условием boolean, вложенный for (int i = 1; i < 5; i++). Во вложенном if с условием сравнения длин строк (strings.get(i).length() > strings.get(i - 1).length()). Далее, если условие выполняется, переносим значения длин в две переменные String и переназначаем ячейки (strings.set(i, tmp2);). 4. Выводим ячейку 0 на экран (в любом случае длиннее её строк нет). И, в конце, еще один цикл - сравниваем длины оставшихся строк с длинной строки ячейки 0, в случае равенства выводим их на экран. Если вдумываться можно как-то проще, но такая задача не стоит.
Айрат
Уровень 18, Казань, Россия
14 июля 2021, 11:10
Возможно кому то поможет: выводить на экран длину самой длинной строки не надо
Антон
Уровень 8, Санкт-Петербург, Россия
6 июля 2021, 15:17
Подскажите, почему валидатор не принимает код? В консоли все работает как надо. Не выполняются условия "Программа должна выводить самую длинную строку на экран." и "Если есть несколько строк с длиной равной максимальной, то нужно вывести каждую из них с новой строки."
package com.javarush.task.task07.task0708;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;

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

public class Solution {
    private static ArrayList<String> strings;

    public static void main(String[] args) throws Exception {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        strings = new ArrayList<>();
        ArrayList<String> maxOfStrings = new ArrayList<>();

        for (int i = 0; i < 5; i++) {
            strings.add(i, reader.readLine());
        }

        String max = strings.get(0);

        for (int i = 0; i < 5; i++) {
            if (strings.get(i).length() >= max.length()) {
                max = strings.get(i);
                maxOfStrings.add(max);
            }
        }

        for (int i = 0; i < maxOfStrings.size(); i++) {
            if (max.length() > maxOfStrings.get(i).length())
                maxOfStrings.remove(i);
        }

        for (int i = 0; i < maxOfStrings.size(); i++) {
            System.out.println(maxOfStrings.get(i));
        }
    }
}