Пару дней думал как лучше, пробовал, решил через два списочных массива сделать, всё прекрасно работает, запускал сам с различными вводными данными, всё что нужно показывает... но блин... валидатор кричит: Программа должна выводить самую длинную строку на экран и Если есть несколько строк с длиной равной максимальной, то нужно вывести каждую из них с новой строки. !!!!!!! Так и происходит же! Вводишь например строки с длинами 3 4 5 5 1, он выводит строки с длинами 5 и 5)) или 1 2 3 4 5, строку только с длиной 5.... в чем проблема???
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 = new ArrayList<String>();
public static void main(String[] args) throws Exception {
// напишите тут ваш код
// создаем переменную временную и максимальную типа String
String max = "";
// создаем интерфей списочный массив maxString для хранение макс. строк если их несколько
ArrayList<String> maxString = new ArrayList<String>();
// создаем буффер потока чтения входящих данных
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
// создаем цикл для заполнение основного списочного массива strings
for (int i = 0; i < 5; i++)
strings.add(reader.readLine());
// проверяем с помощью цикла длину каждой строки в списочном массиве strings
for (int i = 0; i < strings.size(); i++) {
if (strings.get(i).length() >= max.length()) {
max = strings.get(i);
maxString.add(max);
}
}
for (int i = maxString.size()-1; i > 0; i--) {
if (maxString.get(i).length() < maxString.get(i-1).length())
maxString.remove(i);
else if (maxString.get(i).length() > maxString.get(i-1).length())
maxString.remove(i-1);
}
for (int i = 0; i < maxString.size(); i++)
System.out.println(maxString.get(i));
}
}