1 - что не так с выводом на экран. 2 - Почему при создании массива слов из файла, 1е (только первое) слово начинается с индекса строки [1] а не [0](проверено неоднократно с разными файлами), а в [0] пустая строка?
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 static java.lang.String.valueOf;

/*
Составить цепочку слов
*/
public class Solution {
    public static void main(String[] args) throws IOException {
        //...
        String s;
        try(BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));
            BufferedReader br2 = new BufferedReader(new FileReader(br1.readLine()))) {
            s = br2.readLine().trim();
        }
        String[] slova = s.split(" ");
        StringBuilder result = getLine(slova);
        System.out.println(result.toString());
    }

    public static StringBuilder getLine(String... words) { //C:\Users\Aleksandr\Desktop\javaFile.txt
        //Нью-Йорк Амстердам Вена Мельбурн Киев

        if(words == null || words.length == 0) return new StringBuilder();

        StringBuilder sb = new StringBuilder();

        ArrayList<String> list = new ArrayList<>();
        list.add(words[0]);
        String stroka1 =  words[0].substring(1,2).toLowerCase();

        String stroka2 = words[0]. substring(words[0].length() - 1);
        String slovo1; String slovo2;

        for (int i = 1; i < words.length; i++){

            for (int j = 1; j < words.length; j++){
                if (list.contains(words[j])) continue;
                slovo1 = words[j].substring(0, 1).toLowerCase();
                slovo2 = words[j].substring(words[j].length() - 1);

                if (stroka1.equals(slovo2)) {
                    list.add(0, words[j]);
                    stroka1 = slovo1;
                    continue;
                }

                if (stroka2.equals(slovo1)){
                    list.add(list.size(), words[j]);
                    stroka2 = slovo2;
                    continue;
                }
            }
        }

        for (int i = 0; i < words.length; i++){
            if (list.contains(words[i])) continue;
            list.add(list.size(), words[i]);
        }

        for (String l : list){
            sb.append(l + " ");
        }

        return sb;
    }
}