首页 > 解决方案 > 读取多个文本文件并从每个文本文件中查找最长的单词

问题描述

我有一个朋友去年的作业,其中有一个有趣的问题,我发现它非常适合在 java 中练习文本文件操作。问题是这样的。

XYZ 公司是一家数字出版公司,希望您帮助开发一个小型 Java 应用程序。Java 应用程序应该: 1. 计算目录/文件夹中以 .txt 结尾的 java 文件的数量。2.显示每个文件中最长的单词。

输出示例如下所示(假设文件名为 f1.txt、f2.txt 和 f3.txt):

Number of Files = 3
Longest Word in f1.txt = strachouming
Longest Word in f2.txt = newstraaach
Longest Word in f3.txt = revolutions

到目前为止,我已经设法做到了这一点,但我被困住了,我找不到解决这个问题的方法,这对 java 来说是相当新的,并且仍在学习这些概念。

package longestWordTxt;

import java.util.Scanner;
import java.io.*;

public class Longestword {

         public static void main(String [ ] args) throws FileNotFoundException {
             File f = new File("C:/Users/Dell/Desktop/java");
                int count = 0;
                for (File file : f.listFiles()) {
                    if (file.isFile() && (file.getName().endsWith(".txt"))) { 
                          count++; 
                        } 
                }
                System.out.println("Number of files: " + count);


           //calling function longestWord
        new Longestword().getLongestWords();
     }


         //funtion longestWord
    public String getLongestWords() throws FileNotFoundException {
        String longestWord = "";
        String current;
        String [] word = new String[4];
        int i;

        for(i=1;i<5;i++) {

        Scanner scan = new Scanner(new File("C:/Users/Dell/Desktop/java/f"+i+".txt"));




        while (scan.hasNext()) {
            current = scan.next();
            if ((current.length() > longestWord.length()) && (!current.matches(".*\\d.*"))) {
                longestWord = current;
                }
            }
        System.out.println("Longest word in f"+i+".txt = " + longestWord);

        }

        longestWord.replaceAll("[^a-zA-Z ]", "").split("\\s+");

                return longestWord;
            }

    }

这是我的结果:

Number of files: 4
Longest word in f1.txt = disastrous
Longest word in f2.txt = disastrous
Longest word in f3.txt = heartbreaking
Longest word in f4.txt = heartbreaking

我的问题是前两个顶部单词来自 f1.txt 文件,而底部两个单词来自 f3.txt 文件。我该如何解决?

提前感谢您的帮助。

标签: javatext-filesjava.util.scanner

解决方案


您创建的程序从它读取的所有文件中计算出迄今为止最长的单词。这意味着“灾难性”是文件 f1 和 f2 中最长的单词。

如果您想分别获取每个文件的最长单词,而不是与其他文件进行比较,您应该在getLongestWords()方法中 for 循环的每次迭代结束时添加这行代码。

 longestWord = ""; 

该方法getLongestWords()也可以是一种void方法,因为您不需要使用它返回的字符串。


推荐阅读