Выхожу за пределы массива.
Идея такая. Мы идем по массиву циклом и если длина строки меньше следующей, то записывает меньшую строку в конец списка.
Затем мы идет по этому же списку и сравниваем строки с конца. Если строка меньше или равна, то выводи на экран.
public class Solution {
public static void main(String[] args) throws Exception {
ArrayList<String> list = new ArrayList<String>();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
for (int i = 0; i < 5; i++) {
list.add(reader.readLine());
}
for (int i = 0; i < list.size() - 1; i++) {
if (list.get(i).length() < list.get(i + 1).length()) {
list.add(list.get(i));
}
}
for (int i = list.size(); i > 0; i--) {
if (list.get(i).length() <= list.get(i - 1).length()) {
System.out.println(list.get(i));
}
else break;
}
}
}
Ошибка:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 6, Size: 6
at java.util.ArrayList.rangeCheck(ArrayList.java:657)
at java.util.ArrayList.get(ArrayList.java:433)
at com.javarush.task.task07.task0709.Solution.main(Solution.java:42)