При переборе HashMap выводится только одна пара
Всем привет!
Есть HashMap. В других case добавляю в нее пары ключ-значение. При попытке произвести поиск по ключу вручную получаю только одну пару, вторую и последующие не находит. Ошибка в цикле?
case 3:
//поиск по названию. ИЩЕТ ТОЛЬКО ОДНО ЗНАЧЕНИЕ! Надо искать причину
System.out.println("Введите название коктейля: ");
String n = scanner.nextLine();
for (Map.Entry<String, List<Object>> entry : receipts.entrySet()) {
String key = entry.getKey();
if (key.contains(n)) {
// System.out.println("Ключ:");
System.out.println(entry.getKey());
// System.out.println("Значение:");
System.out.println(entry.getValue());
//continue;
//go();
} else System.out.println("Коктейля нет в системе");
go();
}
Ответы (1 шт):
Автор решения: Artem Gatchenko
→ Ссылка
Да, тут типичная ошибка, которая сбивает с толку. Ты выводишь "Коктейля нет в системе" на каждой итерации, если текущий ключ не совпадает. Поэтому даже если нужный коктейль есть, но он не первый в списке — сначала тебе покажут "нет в системе", а потом уже, может быть, и нужный коктейль.
System.out.println("Введите название коктейля: ");
String n = scanner.nextLine();
boolean found = false;
for (Map.Entry<String, List<Object>> entry : receipts.entrySet()) {
String key = entry.getKey();
if (key.contains(n)) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
found = true;
}
}
if (!found) {
System.out.println("Коктейля нет в системе");
}
go();