В вашем коде должны быть указаны следующие вещи:
- Используйте
nextLine()
вместо nextInt()
и next()
. Проверьте Сканер пропускает nextLine () после использования next () или nextFoo ()? для получения дополнительной информации. - Хотя это и не является обязательным требованием, всякий раз, когда вы запрашиваете ввод у пользователя, вы должны всегда печатайте сообщение, описывающее ввод.
- Возможно, ваше требование - хранить контакты с именем в качестве ключа, это не очень хороший дизайн. Если вы попытаетесь поместить другой контакт с тем же именем, старый контакт будет заменен новым, так как карта заменяет старую запись новой, имеющей тот же ключ. Вы должны хранить данные на карте с уникальными ключами, и в этой ситуации уникальным ключом может быть номер телефона и некоторый другой уникальный идентификатор, который вы можете придумать.
- Вы должны запросить ввод для поиска контакта за пределами
while
петля; в противном случае пользователю будет предложено n
количество раз ввести имя для поиска в контактной книге. - Как только имя будет найдено в контактной книге, убедитесь, что
break
the l oop. Если l oop не сломан (т. Е. Имя не найдено на карте), значение n
станет -1
, которое вы можете использовать для печати сообщения о том, что имя не найдено .
Ниже приведен код с указанными выше точками:
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = 0;
boolean valid;
Map<String, String> contactBook = new HashMap<>();
do {
valid = true;
System.out.print("Enter the number of contacts to be saved: ");
try {
n = Integer.parseInt(scanner.nextLine());
for (int i = 0; i < n; i++) {
System.out.println("---Contact#" + (i + 1) + "---");
System.out.print("Enter the name: ");
String name = scanner.nextLine();
System.out.print("Enter the phone number: ");
String phoneNumber = scanner.nextLine();
contactBook.put(name, phoneNumber);
}
} catch (NumberFormatException e) {
System.out.println("This is an invalid entry. Please try again.");
valid = false;
}
} while (!valid);
System.out.print("Enter the name to serach in the contact book: ");
String search = scanner.nextLine();
while (n-- > 0) {
if (contactBook.containsKey(search)) {
System.out.println(search + "=" + contactBook.get(search));
break;
}
}
if (n < 0) {
System.out.println("Not found");
}
}
}
Пример выполнения:
Enter the number of contacts to be saved: 3
---Contact#1---
Enter the name: Arvind
Enter the phone number: 1234567890
---Contact#2---
Enter the name: Kumar
Enter the phone number: 1023456789
---Contact#3---
Enter the name: Avinash
Enter the phone number: 2013456789
Enter the name to serach in the contact book: Kumar
Kumar=1023456789
Еще один пример:
Enter the number of contacts to be saved: 2
---Contact#1---
Enter the name: Hegyi
Enter the phone number: 1234567890
---Contact#2---
Enter the name: Levente
Enter the phone number: 1023456789
Enter the name to serach in the contact book: Hello
Not found
Еще один пример:
Enter the number of contacts to be saved: abc
This is an invalid entry. Please try again.
Enter the number of contacts to be saved: 10.5
This is an invalid entry. Please try again.
Enter the number of contacts to be saved: 2
---Contact#1---
Enter the name: Test1
Enter the phone number: 123
---Contact#2---
Enter the name: Test2
Enter the phone number: 234
Enter the name to serach in the contact book: Test2
Test2=234