Подсчет количества слов в файле - PullRequest
7 голосов
/ 04 ноября 2010

У меня проблема с подсчетом количества слов в файле. Подход, который я использую, заключается в том, что когда я вижу пробел или символ новой строки, тогда я знаю, что нужно подсчитать слово.

Проблема в том, что если у меня есть несколько строк между абзацами, то я считаю их тоже словами. Если вы посмотрите на метод readFile (), вы увидите, что я делаю.

Не могли бы вы помочь мне и направить меня в правильном направлении, как это исправить?

Пример входного файла (включая пустую строку):

word word word
word word

word word word

Ответы [ 13 ]

0 голосов
/ 28 октября 2017

Посмотрите на мое решение здесь, оно должно работать.Идея состоит в том, чтобы удалить все нежелательные символы из слов, затем отделить эти слова и сохранить их в какой-то другой переменной, я использовал ArrayList.Регулируя переменную «excludeSymbols», вы можете добавить больше символов, которые вы хотели бы исключить из слов.

public static void countWords () {
    String textFileLocation ="c:\\yourFileLocation";
    String readWords ="";
    ArrayList<String> extractOnlyWordsFromTextFile = new ArrayList<>();
    // excludedSymbols can be extended to whatever you want to exclude from the file 
    String[] excludedSymbols = {" ", "," , "." , "/" , ":" , ";" , "<" , ">", "\n"};
    String readByteCharByChar = "";
    boolean testIfWord = false;


    try {
        InputStream inputStream = new FileInputStream(textFileLocation);
        byte byte1 = (byte) inputStream.read();
        while (byte1 != -1) {

            readByteCharByChar +=String.valueOf((char)byte1);
            for(int i=0;i<excludedSymbols.length;i++) {
            if(readByteCharByChar.equals(excludedSymbols[i])) {
                if(!readWords.equals("")) {
                extractOnlyWordsFromTextFile.add(readWords);
                }
                readWords ="";
                testIfWord = true;
                break;
            }
            }
            if(!testIfWord) {
                readWords+=(char)byte1;
            }
            readByteCharByChar = "";
            testIfWord = false;
            byte1 = (byte)inputStream.read();
            if(byte1 == -1 && !readWords.equals("")) {
                extractOnlyWordsFromTextFile.add(readWords);
            }
        }
        inputStream.close();
        System.out.println(extractOnlyWordsFromTextFile);
        System.out.println("The number of words in the choosen text file are: " + extractOnlyWordsFromTextFile.size());
    } catch (IOException ioException) {

        ioException.printStackTrace();
    }
}
0 голосов
/ 09 июля 2015

Файл Word-Count

Если между словами есть несколько символов, вы можете разделить и посчитать количество слов. Scanner sc = new Scanner(new FileInputStream(new File("Input.txt"))); int count = 0; while (sc.hasNext()) { String[] s = sc.next().split("d*[.@:=#-]"); for (int i = 0; i < s.length; i++) { if (!s[i].isEmpty()){ System.out.println(s[i]); count++; } } } System.out.println("Word-Count : "+count);

0 голосов
/ 04 ноября 2010

3 шага: поглотить все пробелы, проверить, является ли строка, поглотить все непробелы.3

while(true){
    c = inFile.read();                
    // consume whitespaces
    while(isspace(c)){ inFile.read() }
    if (c == '\n'){ numberLines++; continue; }
    while (!isspace(c)){
         numberChars++;
         c = inFile.read();
    }
    numberWords++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...