My code won't pass the last two requirements, please have a look at my code and let me know if you have any suggestions. Thanks!!
package com.codegym.task.task22.task2209;
/*
Make a word chain
*/
import java.io.*;
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
public class Solution {
public static void main(String[] args) {
String[] arr;
String fileName;
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
fileName = reader.readLine();
reader.close();
FileReader fileReader = new FileReader(fileName);
BufferedReader br = new BufferedReader(fileReader);
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line + " ");
line = br.readLine();
}
arr = sb.toString().split(" ");
StringBuilder result = getLine(arr);
System.out.println(result.toString());
} catch (Exception e) {
e.printStackTrace();
System.out.println("There's an error!");
}
}
public static StringBuilder getLine(String... words) {
Queue<Word> wordList = new LinkedList<>();
StringBuilder sb2 = new StringBuilder();
if (words.length == 0 || words == null) {
return sb2;
} else {
for (String a: words) {
wordList.add(new Word(a));
}
}
Word getWord = wordList.poll(); //get the first word from the wordList and add to sb2
sb2.append(getWord.theWord);
Word getNextWord = wordList.poll(); // ge the next word and compare to getWord.
while((!getNextWord.seenTwice)) {
String compare = sb2.toString();
String compareFirstLetter = Character.toString(compare.toCharArray()[0]);
String compareLastLetter = Character.toString(compare.toCharArray()[compare.length() - 1]);
String getNextWordFirstLetter = getNextWord.firstLetter;
String getNextWordLastLetter = getNextWord.lastLetter;
//need to know at what position to add the word into the StringBuilder, is it at the beginning or the end?
if (compareLastLetter.equalsIgnoreCase(getNextWordFirstLetter)) {
sb2.append(" " + getNextWord.theWord);
} else if (compareFirstLetter.equalsIgnoreCase(getNextWordLastLetter)) {
sb2.insert(0, getNextWord.theWord + " ");
} else {
if (getNextWord.seen == true) {
getNextWord.seenTwice = true;
} else {
getNextWord.seen = true;
}
wordList.add(getNextWord);
}
if (wordList.isEmpty()) {
break;
} else {
getNextWord = wordList.poll();
}
}
return sb2;
}
}