Не могу понять в чем проблема, перемешивал даже входные слова в файле.
package com.javarush.task.task22.task2209;
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.StringTokenizer;
/*
Составить цепочку слов
*/
public class Solution {
public static void main(String[] args) throws IOException {
//Инициализация 2х листов 1.С файла строки построчно 2. Разложенный по пробелам на подстроки
List<String> listInput = new ArrayList<>();
List<String> listForMethod = new ArrayList<>();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
FileReader file = new FileReader(reader.readLine());
//FileReader file = new FileReader(args[0]);
BufferedReader readerFile = new BufferedReader(file);
//Инициализация листа входными данными из файла
while (readerFile.ready()) {
listInput.add(readerFile.readLine());
}
//Разложение входного листа на подсроки. По пробелу
for (String line : listInput) {
StringTokenizer strToken = new StringTokenizer(line);
while (strToken.hasMoreTokens()) {
listForMethod.add(strToken.nextToken());
}
}
StringBuilder result = getLine(getListAsString(listForMethod));
System.out.println(result.toString());
}
//Преобразование листа в массив строк
public static String[] getListAsString(List<String> list) {
String[] resultArrString = new String[list.size()];
for (int i = 0; i < list.size(); i++) {
resultArrString[i] = list.get(i);
}
return resultArrString;
}
public static StringBuilder getLine(String... words) {
//Аррай лист содержащий слова, первое слово 1й элемент листа
List<String> list = new ArrayList<>(Arrays.asList(words));
StringBuilder result = new StringBuilder();
if (words.length != 0) {
result.append(list.get(0));
list.remove(list.get(0));
}
//Сравнить последний символ стрингБилдера с первым символом слова перебираемого в цикле
int i = 0;
while (!(list.size() == 0)){
String word = list.get(i);
String lastCharFromBuilder = "" + result.toString().charAt(result.length() - 1);
String lastCharFromList = "" + word.charAt(0);
if (lastCharFromBuilder.equalsIgnoreCase(lastCharFromList)) {
result.append(" " + word);
list.remove(word);
if (!(i == 0))
i--;
continue;
}
i++;
}
return result;
}
}