Что не так?
package com.javarush.task.task22.task2209;
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
/*
Составить цепочку слов
*/
public class Solution {
public static void main(String[] args) throws IOException {
ArrayList<String> strings = new ArrayList<String>();
try {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new BufferedReader(new InputStreamReader(System.in)).readLine()), "UTF8"));
String nextString;
while ((nextString = br.readLine()) != null) {
strings.addAll(Arrays.asList(nextString.trim().replaceAll("","").split(" ")));
}
} catch (IOException e) {
e.printStackTrace();
}
StringBuilder str = new StringBuilder();
for(String str1 : strings){
if(str.length() == 0)
str.append(str1);
else
str.append(" " + str1);
}
// System.out.println(str);
StringBuilder result = getLine(str.toString().split(" "));
System.out.println(result.toString());
}
public static StringBuilder getLine(String... words) {
if (words.length == 0)
return new StringBuilder();
String[] arr = words.clone();
int max = 0;
char maxCH = arr[0].charAt(0);
for (int i = 0; i < arr.length; i++){
if (maxCH > arr[i].charAt(0)){
maxCH = arr[i].charAt(0);
max = i;
}
arr[i] = arr[i].toLowerCase();
}
StringBuilder newString = new StringBuilder();
newString.append(words[max]);
arr[max] = null;
boolean flag = true;
while (flag) {
flag = false;
for (int i = 0; i < arr.length; i++) {
if (arr[i] != null)
if (arr[i].charAt(0) == newString.toString().toLowerCase().charAt(newString.length() - 1)) {
flag = true;
arr[i] = null;
newString.append(" " + words[i]);
}
}
}
return newString;
}
}