Код принят валидатором, но когда я проверял работоспособность с двумя фамилиями Петров в файле код не работал, а с несколькими другими фамилиями код прекрасно работает. Так в чем проблема?
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
А так не работает. Понять не могу почему.