读取多个文本文件并从每个文本文件中查找最长的单词

时间:2018-05-21 19:54:41

标签: java text-files java.util.scanner

去年,我有一个朋友的分配,这个问题有一个有趣的问题,我觉得这对于在java中使用文本文件操作而言非常有用。问题是这样的。

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

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

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;
            }

    }

我到目前为止设法做到这一点,但我陷入了困境,我无法找到解决这个问题的解决方案,这对于java来说是相当新的,并且仍在学习这些概念。

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

这是我的结果:

JSONObject jsonBody = new JSONObject();
jsonBody.put("name", name);
jsonBody.put("genres", genres);
jsonBody.put("season", season);
jsonBody.put("episodes", nb_episodes);
jsonBody.put("rating", "0");
final String requestBody = jsonBody.toString();

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

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您创建的程序计算了迄今为止所读取的所有文件中最长的单词。意味着灾难性的&#39;是文件f1和f2中最长的单词。

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

 longestWord = ""; 

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