Программа не проходит по условию: "Если вместо числа была введена пустая строка, то программа должна вывести содержимое HashMap согласно условию". Но все именно так и работает, если не ввести число, то программа завершит свое исполнение и выведет мапу. на экран. Так же произойдет и со строкой.
public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        HashMap<Integer, String> map = new HashMap<>();
        int a;
        String s;
        while (true) {
            try {
                a = Integer.parseInt(reader.readLine());
            } catch (NumberFormatException ex) {
                break;
            }
            s = reader.readLine();
            if (s.equals(""))
                break;
             else
                map.put(a, s);
        }

        map.forEach((k, v) -> System.out.println(k + " " + v));

    }
}