На английском работает
На русском работает
С отрицательными числами работает
Валидатор не проходит
package com.javarush.task.task19.task1919;
/*
Считаем зарплаты
*/
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Solution {
public static void main(String[] args) throws IOException {
HashMap<String, Double> generalMap = new HashMap<String, Double>();
FileReader reader = new FileReader(args[0]);
StringBuffer stringsFromBuffer = new StringBuffer();
Pattern pattern = Pattern.compile("^(.+)\\s([0-9]+[.]?.*)");
while (reader.ready()) {
stringsFromBuffer = stringsFromBuffer.append((char) reader.read());
}
String strings = stringsFromBuffer.toString();
String[] stringWithoutEnters = strings.split("\r\n");
reader.close();
for (String s : stringWithoutEnters) {
Matcher matcher = pattern.matcher(s);
if (matcher.find()) {
if (generalMap.containsKey(matcher.group(1))) {
generalMap.put(matcher.group(1), generalMap.get(matcher.group(1)) + Double.parseDouble(matcher.group(2)));
} else {
generalMap.put(matcher.group(1), Double.parseDouble(matcher.group(2)));
}
}
}
generalMap.entrySet().stream()
.sorted(Map.Entry.<String, Double>comparingByValue())
.forEach((v) -> System.out.println(v.getKey() + " " + v.getValue()));
}
}