Программа работает, но не проходит тестирование. Непонятно что означает то, что строки должны быть уникальны. То что их нужно вводить уникальными? Или то что программа, при условии что есть совпадения, должна сделать их уникальными? Или то что нужно запросить другую строку? Я предположил, что нужно запросить заново. Пока так и сделал.
Потом не ясно, действительно ли то, что условие "Введенные данные не должны потеряться!" означает, что в мапе должна сохраниться последняя пара номер -пустая строка (которая означает конец ввода) Пробовал и так, и иначе, меняя местами строки 38 и 39.
Нужно ли отлавливать ошибки при вводе пустоты или строки в номер.
Спасибо.
UPD
Черт, проверка на уникальность неправильно работает, косяк. Но остальные вопросы все равно открыты. Может она и не нужна, эта проверка.
package com.javarush.task.task10.task1019;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
/*
Функциональности маловато!
*/
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<String, Integer>();
while (true)
{
int id = Integer.parseInt(reader.readLine());
String name = reader.readLine();;
boolean nameIsUnique = false;
while (!nameIsUnique && map.size() != 0)
{
if (name.isEmpty()) break;
for (Map.Entry i : map.entrySet())
{
if (!i.getKey().equals(name))
{
nameIsUnique = true;
}
else
{
//System.out.println("Такое слово уже существует, введите новое слово:");
name = reader.readLine();
}
}
}
map.put(name, id);
if (name.isEmpty()) break;
}
for (Map.Entry i : map.entrySet())
{
System.out.println(i.getValue()+" "+i.getKey());
}
}
}