не понимаю в чем дело.
package com.javarush.task.task22.task2209;
import java.io.*;
import java.util.*;
/*
Составить цепочку слов
*/
public class Solution {
public static void main(String[] args) throws IOException {
//...
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
reader = new BufferedReader(new FileReader(fileName));
StringBuilder builder = new StringBuilder();
while (reader.ready()) {
builder.append(reader.readLine());
}
reader.close();
StringBuilder result = getLine(builder.toString().split(" "));
System.out.println(result.toString());
}
public static StringBuilder getLine(String... words) {
if(0 == words.length) return new StringBuilder();
ArrayList<String> list = new ArrayList<>(Arrays.asList(words));
StringBuilder stringBuilder = new StringBuilder();
ArrayList<String> sortedList = new ArrayList<>();
Collections.sort(list);
sortedList.add(list.get(0));
list.remove(0);
int listIndex = 0;
int sortedListIndex = 0;
if(list.size() == 0) return stringBuilder.append(sortedList.get(0));
int counter = 0;
while (list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < sortedList.size(); j++) {
if(sortedList.size()==1) {
if(list.get(i).toUpperCase(Locale.ROOT).charAt(list.get(i).length()-1) == sortedList.get(0).toUpperCase(Locale.ROOT).charAt(0)) {
sortedList.add( 0, list.get(0));
list.remove(0);
break;
} else if(list.get(i).toUpperCase(Locale.ROOT).charAt(0) == sortedList.get(j).toUpperCase(Locale.ROOT).charAt(sortedList.get(0).length()-1)) {
sortedList.add(list.get(i));
list.remove(i);
break;
}
} else if(list.get(i).toUpperCase(Locale.ROOT).charAt(list.get(i).length()-1) == sortedList.get(0).toUpperCase(Locale.ROOT).charAt(0)) {
sortedList.add( 0, list.get(i));
list.remove(i);
break;
} else if(j+1 < sortedList.size()) {
if(list.get(i).toUpperCase(Locale.ROOT).charAt(0) == sortedList.get(j).toUpperCase(Locale.ROOT).charAt(sortedList.get(j).length() - 1) &&
list.get(i).toUpperCase(Locale.ROOT).charAt(list.get(i).length() -1 ) == sortedList.get(j+1).toUpperCase(Locale.ROOT).charAt(0)) {
sortedList.add(list.get(i));
list.remove(i);
break;
}
} else if(j+1 == sortedList.size()) {
if(list.get(i).toUpperCase(Locale.ROOT).charAt(0) == sortedList.get(j).toUpperCase(Locale.ROOT).charAt(sortedList.get(j).length() - 1)) {
sortedList.add(list.get(i));
list.remove(i);
break;
}
}
}
}
counter++;
if(counter > sortedList.size()) {
for (String str : list) {
sortedList.add(str);
}
sortedList.removeAll(sortedList);
Collections.shuffle(list);
sortedList.add(list.get(0));
list.remove(0);
counter = 0;
}
}
stringBuilder.append(sortedList.get(0));
for (int i = 1; i < sortedList.size(); i++) {
stringBuilder
.append(" ")
.append(sortedList.get(i));
}
return stringBuilder;
}
}