我正在编写一个程序,它将从命令行读取两个文件并查找每个 .txt 文件中有多少个单词。我的代码可以正常工作,但是我需要将每个撇号计为 2 个单词,将每个连字符计为两个单词。例如,John's 将变成两个单独的单词“john”和“s”,而 Tick-Tock 将变成“tick”和“tock”)。我也不能使用 util.regex。这是我的代码”
private void readFile(){
Scanner scanner = null;
try {
scanner = new Scanner(file);
while (scanner.hasNextLine()){
String line = scanner.nextLine();
String[] wordOfLine = line.split("\\W");
lineNum++;//accumulate line
//counts all words
for (String word : wordOfLine){
if (word.equals("") || !(isWord(word)))
continue;
words.add(word.toLowerCase());
if (wordNum + 1 > wordNum){//in case of overflow
wordNum++;//accumulate word
}
else
throw new Error(" word number overflow!");
}
}
} catch (FileNotFoundException e) {
throw new Error("cannot find file!");
} finally{
if (scanner != null)
scanner.close();
}
System.out.println("Test for wordNum "+wordNum);
}
//check if text is word
private boolean isWord(String text) {
return text.matches("[a-zA-Z]+");
}
例如,这是我的测试最终结果:
测试 wordNum 54
测试 wordNum 49516
文件 f1:9 行,54 个单词,38 个不同的单词
文件 f2:4666 行,49516 个字,5103 个不同的字
f1 与预期结果匹配良好,但 f2 需要像这样
文件 f2:4666 行,49714 个字,5216 个不同的字
这是 f2 THE PRINCE 的一些文件
尼科洛·马基雅维利
由 WK 万豪翻译
尼科洛·马基雅维利(Nicolo Machiavelli),1469 年 5 月 3 日出生于佛罗伦萨。从 1494 年到 1512 年,他在佛罗伦萨担任官方职务,其中包括前往各个欧洲法院的外交使团。1512 年被囚禁在佛罗伦萨;后来流放并返回圣卡夏诺。1527 年 6 月 22 日死于佛罗伦萨。
介绍
尼科洛·马基雅维利于 1469 年 5 月 3 日出生于佛罗伦萨。他是著名律师贝尔纳多·迪尼科洛·马基雅维利和他的妻子巴托洛梅亚·迪·斯特凡诺·内利的次子。父母双方都是旧佛罗伦萨贵族的成员。