Подсчет символов в файле

Я пишу код, который подсчитывает количество символов, слов и строк в файле .txt. В моем примере текстового файла 21 слово, 2 строки и 114 символов. В выводе моей программы указано 21 слово, 2 строки и 113 символов. Файл в основном пустой и предназначен только для тестирования. В файле есть:

This is a test for counter function. Contents are subject to change.
This line tests if the line count is correct.

Моя программа:

public static void counter(){
    String file_name = "input.txt";
    File input_file = new File(file_name);
    Scanner in_file = null;

    int word_count = 0;
    int line_count = 0;
    int char_count = 0;
    String line;


    try{
        in_file = new Scanner(input_file);
    }
    catch(FileNotFoundException ex){
        System.out.println("Error: This file doesn't exist");
        System.exit(0);
    }
    try{
        while(in_file.hasNextLine()){
            line = in_file.nextLine();
            char_count = char_count + line.length();
            String[] word_list = line.split(" ");
            word_count = word_count + word_list.length;
            String[] line_list = line.split("[,\\n]");
            line_count = line_count + line_list.length;

        }
    }
    catch(ArrayIndexOutOfBoundsException ex){
        System.out.println("Error: The file format is incorrect");
    }
    catch(InputMismatchException ex){
        System.out.println("Error: The file format is incorrect");
    }
    finally{
        System.out.print("Number of words: ");
        System.out.println(word_count);
        System.out.print("Number of lines: ");
        System.out.println(line_count);
        System.out.print("Number of characters: ");
        System.out.println(char_count);
        in_file.close();
    }
}

Не могли бы вы обновить свой вопрос, включив в него ввод, фактический вывод и ожидаемый вывод в виде текста (а не изображений).

dave 22.03.2018 04:08

Сообщение @dave было отредактировано, дайте мне знать, если изменения не соответствуют тому, что вы запрашиваете

M. Dingus 22.03.2018 04:18

пробовал что-то то же самое, но это не рекомендуется. это создает ненужную нагрузку при анализе файлов журналов

Suraj Shingade 22.03.2018 04:35

Результат nextLine () не включает разделитель строк. Это может быть причиной того, что количество ваших персонажей меньше на 1.

dave 22.03.2018 04:39
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
44
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Правильный код для этого будет

public void calculateFileCharecteristics(String fileName){
    try(BufferedReader bufferedReader = new BufferedReader(new FileReader(new 
    File(filename)))){
        String line;
        int lineCount = 0;
        int totalCharCount = 0;
        while((line=bufferedReader.readLine())!=null){
            lineCount++; 
            int charCount = line.split("\n").length;
            totalCharCount +=charCount;
        }
    }
}

Другие вопросы по теме