テキスト ファイルからの入力を受け入れ、ファイルの単語を昇順で重複なく表示するプログラムを作成しました。例外がスローされない場合、出力は正しいです。例外がスローされた場合、ユーザーは有効な入力を求められ、最初の方法が繰り返されます。これが発生し、有効な入力が最終的に入力されると、出力が複製されます。
何かがリセットされていないことはわかっていますが、それが何であるかわかりません。
public void go() {
getWords();
System.out.println(wordList);
wordList = new ArrayList<String>(new HashSet<String>(wordList));
Collections.sort(wordList);
System.out.println(wordList);
}
void getWords() {
try {
File file = new File(getInput());
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;
while ((line = reader.readLine()) != null) {
addWord(line);
}
} catch(Exception ex) {
System.out.println("Invalid file name, try again.");
go();
}
}
void addWord(String lineToParse) {
String[] tokens = lineToParse.split("\\s");
for(int i = 0; i < tokens.length; i++) {
wordList.add(tokens[i]);
}
}