Жалуется на
Метод getContactFirstName() должен вернуть строку состоящую из имени (смотри примеры). Фамилию и имя нужно взять из метода getName() объекта сontact.
хотя все правильно выводит, лишних знаков нет.
Ivan
Ivanov
UA
callto://+380501234567
JavaRush Ltd.
package com.javarush.task.task19.task1905;
import java.util.HashMap;
import java.util.Map;
/*
Закрепляем адаптер
Адаптировать Customer и Contact к RowItem.
Классом-адаптером является DataAdapter.
Инициализируйте countries перед началом выполнения программы. Соответствие кода страны и названия:
UA Ukraine
RU Russia
CA Canada
Требования:
1. Класс Solution должен содержать public static поле countries типа Map.
2. В статическом блоке класса Solution инициализируй поле countries тестовыми данными согласно заданию.
3. Класс Solution должен содержать интерфейс RowItem.
4. Класс Solution должен содержать интерфейс Contact.
5. Класс Solution должен содержать интерфейс Customer.
6. Класс DataAdapter должен реализовывать интерфейс RowItem.
7. Класс DataAdapter должен содержать два приватных поля: customer типа Customer и contact Contact.
8. Класс DataAdapter должен содержать конструктор с параметрами (Customer customer, Contact contact), который инициализирует поля contact и customer.
9. В классе DataAdapter реализуй методы интерфейса RowItem используя подсказки в виде комментариев в интерфейсах.
*/
public class Solution {
public static Map<String,String> countries = new HashMap<String,String>();
static
{
countries.put("UA", "Ukraine");
countries.put("RU", "Russia");
countries.put("CA", "Canada");
}
//example
//example
//example
//example +38(050)123-45-67 or +3(805)0123-4567 or +380(50)123-4567 or ...
public static void main(String[] args) {
/*
Contact contact = new Contact() {
@Override
public String getName() {
return "Ivanov, Ivan";
}
@Override
public String getPhoneNumber() {
return "+380(50)123-4567";
}
};
Customer customer = new Customer() {
@Override
public String getCompanyName() {
return "JavaRush Ltd.";
}
@Override
public String getCountryName() {
return "Ukraine";
}
};
DataAdapter da = new DataAdapter(customer, contact);
System.out.println(da.getContactFirstName());
System.out.println(da.getContactLastName());
System.out.println(da.getCountryCode());
System.out.println(da.getDialString());
System.out.println(da.getCompany());
*/
}
public static class DataAdapter implements RowItem{
private Customer customer;
private Contact contact;
public DataAdapter(Customer customer, Contact contact) {
this.customer = customer;
this.contact = contact;
}
@Override
public String getCountryCode() {
for (Map.Entry<String, String> pair : countries.entrySet()) {
if (pair.getValue().equals(customer.getCountryName())) return pair.getKey();
}
return null;
}
@Override
public String getCompany() {
return customer.getCompanyName();
}
@Override
public String getContactFirstName() {
return contact.getName().substring(contact.getName().indexOf(" ") + 1);
}
@Override
public String getContactLastName() {
return contact.getName().substring(0, contact.getName().indexOf(" ") - 1);
}
@Override
public String getDialString() {
String s = contact.getPhoneNumber();
String out = "";
for(char ch : s.toCharArray()){
if (String.valueOf(ch).matches(".*[+0-9].*")) out += String.valueOf(ch);
}
return "callto://" + out;
}
}
public static interface RowItem {
String getCountryCode(); //example UA
String getCompany(); //example JavaRush Ltd.
String getContactFirstName(); //example Ivan
String getContactLastName(); //example Ivanov
String getDialString(); //example callto://+380501234567
}
public static interface Customer {
String getCompanyName(); //example JavaRush Ltd.
String getCountryName(); //example Ukraine
}
public static interface Contact {
String getName(); //example Ivanov, Ivan
String getPhoneNumber(); //example +38(050)123-45-67 or +3(805)0123-4567 or +380(50)123-4567 or ...
}
}