В файле ввод: Amsterdam Melbyrn Nyu-Iork Kiev Vena Wyka
Вывод:Wyka Amsterdam Melbyrn Nyu-Iork Kiev Vena
Или я не так понял задачу? Надо вывести максимально длинную последовательность, или все же надо начинать с первого по алфавиту слова и идти пока условие верно? В общем ХЕЛП.
package com.javarush.task.task22.task2209;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
/*
Составить цепочку слов
C:\Users\ДмАлИвАн\Desktop\abn.txt
C:\Users\ДмАлИвАн\Desktop\new 1.txt
*/
public class Solution {
public static void main(String[] args) throws IOException {
//...
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String name = reader.readLine();
reader.close();
String lineFile = "";
BufferedReader fileReader = new BufferedReader(new FileReader(name));
while (fileReader.ready()) {
lineFile = "" + fileReader.readLine() + " ";
}
String[] words = lineFile.split(" ");
StringBuilder result = getLine(words);
System.out.println(result.toString());
}
public static StringBuilder getLine(String... words) {
if (words.length == 0) return new StringBuilder("");
ArrayList<String> wordsList = new ArrayList<>();
for (String a : words) {
wordsList.add(a);
}
Collections.sort(wordsList);
for(String a:wordsList){
//System.out.println(a);
}
ArrayList<StringBuilder> builders=new ArrayList<>();
//str=str.append(wordsList.get(0)+" ");
for(int i=0;i<wordsList.size();i++) {
StringBuilder str=new StringBuilder();
String c = wordsList.get(i);
str = str.append(c + " ");
for (int j = 0; j < wordsList.size(); j++) {
String a = c.substring(c.length() - 1);
String b = wordsList.get(j).substring(0, 1);
//System.out.println(a+" "+b);
if (a.equalsIgnoreCase(b)&&str.indexOf(wordsList.get(j))==-1) {
c = wordsList.get(j);
str = str.append(c + " ");
//System.out.println(c);
j = 0;
}
}
builders.add(str);
}
StringBuilder result=builders.get(0);
int max=builders.get(0).length();
for(StringBuilder a:builders){
if(a.length()>max){
result=a;
}
}
for (int j = 0; j < wordsList.size(); j++) {
if (result.indexOf(wordsList.get(j)) == -1) {
result = result.append(wordsList.get(j));
}
}
/*for(StringBuilder a:builders){
System.out.println(a);
}*/
return result;
}
}