Уже протестировал в Идее все возможные варианты из комментариев! Что ему нужно???
package com.javarush.task.task22.task2209;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.*;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.*;
import java.util.StringTokenizer;
/*
Составить цепочку слов
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
FileReader fileReader = new FileReader(reader.readLine());
BufferedReader reader1 = new BufferedReader(fileReader);
String s;
String line = "";
while ((s = reader1.readLine()) != null) {
line += s + " ";
}
String[] words = line.split("\\s");
StringBuilder result = getLine(words);
System.out.println(result.toString().trim());
}
public static StringBuilder getLine(String... words) {
StringBuilder stringBuilder = new StringBuilder();
if (words == null) {
return null;
}
else {
String str = "";
int count = 0;
int count1 = 0;
for (int i=0; i< words.length; i++) {
for (int j=i+1; j< words.length; j++) {
if (words[i].toLowerCase(Locale.ROOT).charAt(0) == words[j].charAt(words[j].length()-1)) {
count++;
}
if(words[i].charAt(words[i].length()-1) == words[j].toLowerCase(Locale.ROOT).charAt(0)) {
count1++;
}
}
if(count < 1) {
str = words[0];
words[0] = words[i];
words[i] = str;
}
if(count1 < 1) {
str = words[words.length-1];
words[words.length-1] = words[i];
words[i] = str;
}
count = 0;
count1 = 0;
}
for (int i=0; i< words.length; i++) {
for (int j=i+1; j< words.length; j++) {
if ((words[j].toLowerCase(Locale.ROOT).charAt(0)) == words[i].charAt(words[i].length()-1)) {
str = words[j];
words[j] = words[i+1];
words[i+1] = str;
break;
}
}
}
for (String string : words)
stringBuilder.append(string + " ");
}
return stringBuilder;
}
}