Код принят валидатором, но когда я проверял работоспособность с двумя фамилиями Петров в файле код не работал, а с несколькими другими фамилиями код прекрасно работает. Так в чем проблема?
package com.javarush.task.task19.task1919;

/*
Считаем зарплаты
*/

import java.io.*;
import java.util.*;

public class Solution {
    public static void main(String[] args) throws Exception{
        String filename = args[0];
        ArrayList<String> list = new ArrayList<>();
        FileReader fr = new FileReader(filename);
        Scanner scan = new Scanner(fr);
        String str = "";
        while (scan.hasNextLine()) {
            str = scan.nextLine();
            if (!str.isEmpty()) list.add(str);
        }
        fr.close();

        ArrayList<String> names = new ArrayList<>();
        ArrayList<Double> zp = new ArrayList<>();
        for (String s: list){
            names.add(s.split(" ")[0]);
            zp.add(Double.parseDouble(s.split(" ")[1]));
        }
        Map<String, Double> map = new HashMap<>();

        for (int i = 0; i < list.size(); i++){
            String name = names.get(i);
            double zrp = zp.get(i);
            if (!map.containsKey(name)){
                map.put(name, zrp);
            }
            else {
                map.replace(name, map.get(name), zrp + map.get(name));
            }
        }
        SortedMap<String, Double> sortedMap = new TreeMap<>(map);
        for (Map.Entry<String, Double> pair: sortedMap.entrySet()){
            System.out.println(pair.getKey() + " " + pair.getValue());
        }

        //System.out.println(map.get("Петров"));
    }
}
Пример ввода: Петров 2 Сидоров 6 Иванов 1.35 Иванов 3.1 Вывод: Иванов 4.45 Сидоров 6.0 Петров 2.0 Все нормально работает, а так : Ввод : Петров 2 Сидоров 6 Иванов 1.35 Петров 3.1 Вывод : Иванов 1.35 Петров 3.1 Сидоров 6.0 Петров 2.0 А так не работает. Понять не могу почему.