Помогите разобраться. Не пойму почему не работает. Уже, для упрощения, сделал сначала без условия на прерывание пустой строкой. Просто задал цикл (for) на определенной количеством пар. С конечным циклом все отработало. Пытаюсь сделать тоже самое уже с while с условием выхода из ввода в случае isEmpty(). Получаю ошибку NFE. Уважаемые гуру, помогите разобраться.
public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        HashMap<String, Integer> map = new HashMap<>();
        while (true) {
            if (reader.readLine().isEmpty()) {
                break;
            } else {
                int id = Integer.parseInt(reader.readLine());
                String name = reader.readLine();
                map.put(name, id);
            }
        }
        for (HashMap.Entry<String, Integer> pair: map.entrySet()) {
             int id = pair.getValue();
             String name = pair.getKey();
             System.out.println(id + " " + name);
        }

    }
}