Не проходят последние 2 пункта. Программа выводит не все слова. Может кто-то подсказать в какой момент что-то идёт не так?
package com.javarush.task.task22.task2209;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
/*
Составить цепочку слов
*/
public class Solution {
public static void main(String[] args) throws IOException {
List<String> list = new ArrayList();
BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
String filename = read.readLine();
read.close();
try(BufferedReader reader = new BufferedReader(new FileReader(filename))) {
String line;
while((line = reader.readLine()) != null) {
String[] s = line.split(" ");
for(String l: s) {
list.add(l);
}
}
} catch (FileNotFoundException e) {}
//...
StringBuilder result = getLine(new String[0]);
System.out.println(result.toString());
}
public static StringBuilder getLine(String... words) {
AbstractList<String> word = new ArrayList<>();
StringBuilder str = new StringBuilder();
for (String w: words){
word.add(w);
}
if(word.isEmpty()){
return str;
}
String r = word.get((int) (Math.random() * word.size()));
str.append(r + " ");
word.remove(r);
for (int i = 0; i < word.size(); i++){
for (int j = 0; j < word.size(); j++){
String w = word.get(j);
char a = Character.toLowerCase(w.charAt(0));
char b = Character.toLowerCase(str.charAt(str.length() - 2));
if (a == b){
str.append(w + " ");
word.remove(j);
}
}
}
str.deleteCharAt(str.length() - 1);
return str;
}
}