Почему строчки
int id = Integer.parseInt(reader.readLine());
String name = reader.readLine();
Обязательно должны быть внутри блока try? Почему их нельзя оставить просто в пределах цикла?
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
boolean mark = true;
HashMap <String, Integer> list = new HashMap<>();
while (mark){
int id = Integer.parseInt(reader.readLine());
String name = reader.readLine();
try {
if(name.isEmpty()) {
mark = false;
}
list.put(name, id);
}catch (Exception e){
break;
}
}
for(Map.Entry entry: list.entrySet()){
System.out.println(entry.getValue() + " " + entry.getKey());
}
}
}