Не могу понять почему. Программа работает, с отрицательными числами в том числе...
package com.javarush.task.task19.task1919;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
/*
Считаем зарплаты
*/
public class Solution {
public static void main(String[] args) throws IOException{
FileReader reader = new FileReader(args[0]);
ArrayList<String> strList= new ArrayList<>();
while (reader.ready()){
StringBuilder str = new StringBuilder();
while (reader.ready()){
int c = reader.read();
if (c!=13)str.append((char)c);else { if (reader.ready())reader.read(); break;}
}
strList.add(str.toString());
}
reader.close();
for (Map.Entry<String, Double> pair : findSum(strList).entrySet()){
System.out.println(pair.getKey()+" "+pair.getValue());
}
}
private static TreeMap<String, Double> findSum(ArrayList strList){
TreeMap<String, Double> resMap = new TreeMap<>();
ListIterator<String> iter = strList.listIterator();
while (iter.hasNext()){
StringBuilder personName = new StringBuilder();
StringBuilder personData = new StringBuilder();
char[] chars = iter.next().toCharArray();
for (char c : chars){
if (c!=' ')
if(Character.isLetter(c))personName.append(c);
else personData.append(c);
}
if (resMap.containsKey(personName.toString())) resMap.put(personName.toString(), resMap.get(personName.toString())+Double.parseDouble(personData.toString()));
else resMap.put(personName.toString(), Double.parseDouble(personData.toString()));
}
return resMap;
}
}