Если пишем новое имя, программа просит ввести номер телефона и запоминает его. Если новый номер телефона — просит ввести имя и также запоминает. Если вводим существующее имя или номер телефона, программа выводит всю информацию о контакте. При вводе команды LIST программа печатает в консоль список всех абонентов в алфавитном порядке с номерами. При итерации TreeMap и выводе содержимого значение выводился как null:
LIST
79027555543null
79037555587null
79076555543null
Аннаnull
Василийnull
Федорnull
Что нужно исправить, чтобы map выводилось в таком виде?
-79037555587 Федор
-79016555576 Анна
-79027666687 Иван
Мой код:
public static void main(String[] args) {
System.out.println("Введите данные: ");
Scanner scanner = new Scanner(System.in);
TreeMap<String, String> map = new TreeMap<>();
while (true) {
String str = scanner.next();
Matcher matcher = Pattern.compile("[a-zA-Zа-яА-Я.].").matcher(str);
Matcher matcher2 = Pattern.compile("^7\\d{10}$").matcher(str);
if (str.equals("LIST")) {
for (Map.Entry<String, String> item2 : map.entrySet()) {
System.out.println(item2.getKey()+item2.getValue());
}
} else if (matcher2.find()) {
if (map.containsKey(str)) {
System.out.println(map.get(str));
} else {
System.out.println(" Введите имя :");
map.put(str, map.get(str));
}
} else if (matcher.find()) {
if (map.containsValue(str)) {
for (Map.Entry<String, String> item : map.entrySet()) {
if (str.equals(item.getValue())) {
System.out.println(item.getKey());
}
}
} else System.out.println(" Введите телефон :");
map.put(str, map.get(str));
} else System.out.println("Введите верное значение");
}
}
}
Проблема в том, что после запросов Введите имя
и Введите телефон
, из System.in
ничего не читается, а вместо этого делается:
map.put(str, map.get(str));
где str
это значение, которое пользователь уже ввел и которое проверялось. Оно используется как ключ и в словарь вставляется всегда null
.
Нужно добавить после запроса имени что-то вроде:
System.out.println(" Введите имя :");
String name = scanner.next();
map.put(str, name);
А после ввода телефона:
else {
System.out.println(" Введите телефон :");
String phone = scanner.next();
map.put(phone, str);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Подскажите, как передать объект в форме springЯ использую Thymeleaf
Нужно реализовать такую штукуДумал сделать с помощью shape, но пока только круговой получился
Можно ли одним запросом вставить данные в несколько таблиц в PostgreSQL?