IT网络/编程学生在这里试图完成一项作业,我遇到了一个障碍。我们的任务是读取文本文件,将单词放入 ArrayList 中,并对内容执行字符串操作。我能够将单词拉入ArrayList,按升序对内容进行排序,删除任何少于四个字符的单词,删除重复的条目,并删除数字。然而,我发现带有撇号的单词正在被“切断”。像“不会”和“不能”这样的词被放入我的 ArrayList 中,作为“会”和“不能”。
我已经为我的扫描仪对象尝试了不同的分隔符,但我似乎找不到一个可以在单词中保留撇号而不在撇号之后切断单词的分隔符。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.Scanner;
public class textFile {
public static void main(String[] args) throws FileNotFoundException {
// Scanner object reads in the required text file to the "words" ArrayList.
Scanner sc = new Scanner(new File("textfile.txt"), "UTF-8");
ArrayList<String> words = new ArrayList<String>();
while (sc.hasNext()) {
sc.useDelimiter("[^A-Za-z]");
words.add(sc.next().toLowerCase());
}
// Closes the Scanner object used just above.
sc.close();
// Sorts the "words" ArrayList in ascending order.
Collections.sort(words);
// Creates the "wordsNoDuplicates" ArrayList. Removes duplicate strings.
LinkedHashSet<String> wordsNoDup = new LinkedHashSet<String>(words);
// Removes all words containing less than four characters.
wordsNoDup.removeIf(u -> u.length() < 4);
// Prints the total number of words in the "wordsNoDup" ArrayList
System.out.println("Total Number of Words: " + wordsNoDup.size() + "\n");
// Calculate and print the average word length.
// double avgWordLength = 21186 / wordsNoDup.size();
System.out.println("Average Word Length: " + 7.0 + "\n");
// Print out the "words" ArrayList. Intended for debugging.
System.out.print(wordsNoDup);
System.out.println();
}
}
同样,像“不能”,“不应该”和“不会”这样的词被拉进来作为“可以”,“应该”和“会”。似乎是撇号和任何东西,它被丢弃。我会公开承认我不是一个对Java或编程有广泛了解的人,但任何帮助将不胜感激!
慕的地6264312
相关分类