вывод соответствует заданию, в т.ч. с отрицательными значениями
package com.javarush.task.task19.task1919;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.TreeMap;
import java.util.*;
import java.io.*;
/*
Считаем зарплаты
*/
public class Solution {
public static void main(String[] args) throws IOException{
BufferedReader reader = new BufferedReader(new FileReader(args[0]));
Map<String, Double> map = new TreeMap<>();
String line;
while ((line = reader.readLine()) != null) {
String name = line.substring(0, line.indexOf(' ')).toLowerCase();
double value = Double.valueOf(line.substring(line.indexOf(' ') + 1));
if(map.containsKey(name)){
value += map.get(name);
map.put(name, value);
}else {
map.put(name, value);}
}
for (Map.Entry<String, Double> pair : map.entrySet()){
String key = pair.getKey();
Double value = pair.getValue();
System.out.println(key.substring(0, 1).toUpperCase() + key.substring(1) + " " +value);
}
reader.close();
}
}