Ремоендации от ментора:
"Метод getPhoneNumber() должен вернуть валидный телефонный номер (смотри примеры), дополненный нулями до 10 цифр при необходимости. Телефонный код страны нужно взять из getCountryPhoneCode(), а сам номер из getPhoneNumber() объекта data"
Взял тест с комментов, вывод такой у кода такой:
JavaRush Ltd.
Ukraine
Ivanov, Ivan
+38(501)700-00-00
при том что
+38(050)123-45-67 --- это пример с задачи
Что я делаю не правильно ?
добавлено, кажись косяк с octal integer java, как лечить ?)
package com.javarush.task.task19.task1903;
/*
Адаптация нескольких интерфейсов
*/
import java.util.HashMap;
import java.util.Map;
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");
}
public static void main(String[] args) {
// IncomeData data = new IncomeData() {
// public String getCountryCode() { return "UA"; }
//
// public String getCompany() { return "JavaRush Ltd."; }
//
// public String getContactFirstName() { return "Ivan"; }
//
// public String getContactLastName() { return "Ivanov"; }
//
// public int getCountryPhoneCode() { return 38; }
//
// public int getPhoneNumber() { return 5017; }
// };
//
// IncomeDataAdapter a = new IncomeDataAdapter(data);
//
// System.out.println(a.getCompanyName());
// System.out.println(a.getCountryName());
// System.out.println(a.getName());
// System.out.println(a.getPhoneNumber());
}
public static class IncomeDataAdapter implements Customer, Contact
{
private IncomeData data;
IncomeDataAdapter(IncomeData d) {
this.data=d;
}
@Override
public String getCompanyName() {
return this.data.getCompany();
}
@Override
public String getCountryName() {
return countries.get(this.data.getCountryCode());
}
@Override
public String getName() {
return this.data.getContactLastName() + ", "+ this.data.getContactFirstName();
}
@Override
public String getPhoneNumber() {
String number = ""+this.data.getPhoneNumber();
// System.out.println("number is " + number);
if(number.length()<10) {
while(number.length()<10)
{
number=number + "0";
}
}
// System.out.println("number after " + number);
String code = "" + this.data.getCountryPhoneCode();
return "+" + code +"(" +number.substring(0,3)+")" +number.substring(3,6) + "-"
+number.substring(6,8)+"-" + number.substring(8,10);
}
}
public static interface IncomeData {
String getCountryCode(); //example UA
String getCompany(); //example JavaRush Ltd.
String getContactFirstName(); //example Ivan
String getContactLastName(); //example Ivanov
int getCountryPhoneCode(); //example 38
int getPhoneNumber(); //example 501234567
}
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
}
}