Читать несколько текстовых файлов и найти самое длинное слово из каждого текстового файла - PullRequest
0 голосов
/ 21 мая 2018

У меня есть задание друзей в прошлом году, у которого был интересный вопрос, и который я нашел хорошим для практики с манипуляциями с текстовыми файлами в Java.вопрос идет так.

Компания XYZ - это цифровая издательская компания, и вам нужна ваша помощь в разработке небольшого Java-приложения.Приложение Java должно: 1. Подсчитать количество файлов Java, которые заканчиваются на .txt в каталоге / папке.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, а 2 нижних - из файла f3.txt.как я могу это исправить?

Спасибо за вашу помощь заранее.

1 Ответ

0 голосов
/ 21 мая 2018

Программа, которую вы создали, вычисляет самое длинное слово из всех прочитанных файлов.Это означает, что слово «катастрофический» является самым длинным словом в файлах f1 и f2.

Если вы хотите получить самое длинное слово каждого файла отдельно, а не по сравнению с другими файлами, вам следует добавить эту строку кода в концекаждой итерации цикла for в вашем методе getLongestWords().

<code> longestWord = ""; 

Также метод getLongestWords() может быть методом void, так как вам не нужно использовать возвращаемую строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...