Я пишу код, который подсчитывает количество символов, слов и строк в файле .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 было отредактировано, дайте мне знать, если изменения не соответствуют тому, что вы запрашиваете
пробовал что-то то же самое, но это не рекомендуется. это создает ненужную нагрузку при анализе файлов журналов
Результат nextLine () не включает разделитель строк. Это может быть причиной того, что количество ваших персонажей меньше на 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;
}
}
}
Не могли бы вы обновить свой вопрос, включив в него ввод, фактический вывод и ожидаемый вывод в виде текста (а не изображений).