Files
prog-intro-2025/java/wordStat/WordStat.java
me 2f05f238e9
All checks were successful
Markup Tests / test (push) Successful in 8s
Markdown to Html Tests / test (push) Successful in 17s
update
2026-02-17 09:32:08 +03:00

69 lines
2.0 KiB
Java

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.*;
/**
* @author Nikita Doschennikov (me@fymio.us)
*/
public class WordStat {
public static void main(String[] args) {
if (args.length != 2) {
System.err.println("incorrect input!");
System.err.println("usage: java WordStat <inputFile> <outputFile>");
}
String inputFileName = args[0];
String outputFileName = args[1];
try {
BufferedReader r = new BufferedReader(
new FileReader(inputFileName)
);
LinkedHashMap<String, Integer> wordCount = new LinkedHashMap<>();
StringBuilder sb = new StringBuilder();
int data = r.read();
while (data != -1) {
char c = (char) data;
if (
Character.getType(c) == Character.DASH_PUNCTUATION ||
Character.isLetter(c) ||
c == '\''
) {
sb.append(c);
} else {
if (!sb.isEmpty()) {
String word = sb.toString().toLowerCase();
wordCount.put(
word,
wordCount.getOrDefault(word, 0) + 1
);
sb.setLength(0);
}
}
data = r.read();
}
r.close();
PrintWriter writer = new PrintWriter(
outputFileName,
StandardCharsets.UTF_8
);
for (Map.Entry<String, Integer> entry : wordCount.entrySet()) {
String key = entry.getKey();
int value = entry.getValue();
writer.println(key + " " + value);
}
writer.close();
} catch (Exception ex) {
System.err.println("An error occured: " + ex.getMessage());
}
}
}