我正在讀取一個文本文件,並將該文本文件中的一組唯一字存儲到一個ArrayList中(請確認是否有更好的結構來完成此操作)。我使用掃描儀掃描文本文件並將分隔符指定爲「」(空格),如下所示;Java分隔符跳過一個詞
ArrayList <String> allWords = new ArrayList <String>();
ArrayList <String> Vocabulary = new ArrayList <String>();
int count = 0;
Scanner fileScanner = null;
try {
fileScanner = new Scanner (new File (textFile));
} catch (FileNotFoundException e) {
System.out.println (e.getMessage());
System.exit(1);
}
fileScanner.useDelimiter(" ");
while (fileScanner.hasNext()) {
allWords.add(fileScanner.next().toLowerCase());
count++;
String distinctWord = (fileScanner.next().toLowerCase());
System.out.println (distinctWord.toString());
if (!allWords.contains(distinctWord)) {
Vocabulary.add(distinctWord);
}
}
因此,在打印詞彙表的內容後,每個單詞後都會跳過一個單詞。因此,例如,如果我有以下文本文件;
「敏捷的棕色狐狸跳過懶狗」
印製的內容是「過懶快速狐狸」,然後給我一個錯誤;
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at *java filename*.getWords(NaiveBayesTxtClass.java:82)
at *java filename*.main(NaiveBayesTxtClass.java:22)
任何人都可以請給我一些關於如何解決這個問題的建議嗎?我有一種感覺,它與fileScanner.useDelimiter和fileScanner.hasNext()語句有關。
使用['HashSet'](http://docs.oracle.com/javase/6/docs/api/java/util/HashSet.html)而不是'ArrayList' - 它會自動忽略重複項。 –
Thankyou Greg,使用HashSet更容易,工作也更少。非常感激。 – Triple777er