Почему метод выбрасывает ошибку?

Решаю задачу на степике. Gри вводе решения платформа выдает ошибку: Неожиданное исключение: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1. Не понимаю, почему так происходит? Можете подсказать, что делаю не так?

Условие задачи: Магазину нужно сохранять информацию о продажах для каждого сотрудника. Напишите метод Map getSalesMap(Reader reader) который принимает Reader содержащий строки вида:

Алексей 3000 Дмитрий 9000 Антон 3000 Алексей 7000 Антон 8000. Метод должен получить все строки из Readera и заполнить и вернуть карту где ключом будет имя сотрудника, а значением сумма всех его продаж.

public class Sales {
    public static Map<String, Long> getSalesMap(Reader reader) throws IOException {
        Map<String, Long> map = new HashMap<>();
        int fromReader = reader.read();
        String line = String.valueOf(fromReader);
        while(line != null) {
            String name = line.trim().split(" ")[0];
            Long salary = Long.parseLong(line.trim().split(" ")[1]);
            if (map.containsKey(name)) {
                map.put(name, map.get(name) + salary);
            } else {
                map.put(name, salary);
            }
        }
        return map;
    }
}

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

Автор решения: Vadik

Неправильно работаете с Reader. Метод read согласно документации вычитывает только первый символ. Используйте, например, BufferedReader, чтобы считывать данные построчно:

BufferedReader br = new BufferedReader(reader);
String line = br.readLine();

В вашем случае будет удобно воспользоваться классом Scanner для считывания данных, например:

Scanner scanner = new Scanner(reader);
String name = scanner.next();
long salary = scanner.nextLong();
→ Ссылка