Некорректное отображение вывода из файла

Необходимо вывести данные из файла Фамилия-Цифра. Если фамилия повторилась, то цифры сложить.

Пользуюсь встроенным в Windows блокнотом.

Ввод: Петров 0.501 Иванов 1.35 Петренко 1 Петров 0.85 Петренко 0.25

Все числа складываются, имена сортируются. Но что бы я не добавлял, вывод всегда корректный кроме одной строки. Петров 0.501 всегда выбрасывается последний и не складывается с предыдущим.

ВЫВОД: Иванов 1.35 Петренко 1.25 Петров 0.85 Петров 0.501

BufferedReader reader = new BufferedReader(new FileReader(args[0]));
        String line;
        Map<String, Double> map = new TreeMap<>();
        while ((line = reader.readLine()) != null) {
            if (map.containsKey(line.split(" ")[0])) {
                map.replace(line.split(" ")[0], map.get(line.split(" ")[0]) + Double.parseDouble(line.split(" ")[1]));
            } else {
                map.put(line.split(" ")[0], Double.parseDouble(line.split(" ")[1]));
            }
        }
        reader.close();
        for (Map.Entry<String, Double> pair: map.entrySet()) {
            System.out.println(pair.getKey() + " " + pair.getValue());
        }

Код

Файл

Вывод

Цифры


Ответы (1 шт):

Автор решения: Aziz Umarov

Попробуйте так я чуток подправил код,

package test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.net.URI;
import java.util.Map;
import java.util.TreeMap;

public class App {
  public static void main(String[] args) {
    try {
      URI uri = App.class.getClassLoader().getResource("test.txt").toURI();
      try (FileReader file = new FileReader(new File(uri))) {
        BufferedReader reader = new BufferedReader(file);
        String line;
        Map<String, Double> map = new TreeMap<>();
        while ((line = reader.readLine()) != null) {
          String key = line.split(" ")[0].trim();
          String value = line.split(" ")[1].trim();
          System.out.println("Read " + key + ": " + value);
          if (map.containsKey(key)) {
            map.replace(key, map.get(key) + Double.parseDouble(value));
            System.out.println("Updated Map " + key + ": " + map.get(key));
          } else {
            map.put(key, Double.parseDouble(value));
            System.out.println("Added Map " + key + ": " + map.get(key));
          }
        }
        System.out.println("Output:");
        for (Map.Entry<String, Double> pair : map.entrySet()) {
          System.out.println(pair.getKey() + ": " + pair.getValue());
        }
      } catch (Exception e) {
        System.out.println(e.getMessage());
      }
    } catch (Exception e) {
      System.out.println(e.getMessage());
    }
  }
}

ресурсный текст файл

введите сюда описание изображения

Результат.

введите сюда описание изображения

→ Ссылка