Hi,
For practice purposes, I tried to use StringBuilder in the getPhoneNumber method. During the tests(getPhoneNumberTest method) I receive a correct output but the validation fails. Do you have any idea what can be wrong here?
package pl.codegym.task.task19.task1903;
/*
Dostosowywanie wielu interfejsów
*/
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Solution {
public static Map<String, String> countries = new HashMap<>();
static {
countries.put("UA", "Ukraina");
countries.put("US", "Stany Zjednoczone");
countries.put("FR", "Francja");
}
public static void main(String[] args) {
System.out.println(getPhoneNumberTest());
}
////METHOD TO TEST getPhoneNumber method starts here
public static String getPhoneNumberTest() {
String codeNumber = "1";
String phoneNumber = "67";
String result = "";
StringBuilder sbCode = new StringBuilder(phoneNumber);
while (phoneNumber.length() < 10) {
phoneNumber = sbCode.insert(0, "0").toString();
}
if (phoneNumber.length() == 10) {
StringBuilder sbResult = new StringBuilder(result);
sbResult.insert(0, "+").append(codeNumber);
sbResult.insert(2, "(").append(phoneNumber, 0, 3).append(")");
sbResult.append(phoneNumber, 3, 6).append("-");
sbResult.append(phoneNumber, 6, 8).append("-");
result = sbResult.append(phoneNumber, 8, 10).toString();
}
return result;
}
////
public static class IncomeDataAdapter implements Contact, Customer {
private IncomeData data;
public IncomeDataAdapter(IncomeData data) {
this.data = data;
}
@Override
public String getCompanyName() {
return data.getCompany();
}
@Override
public String getCountryName() {
Set<Map.Entry<String, String>> entries = countries.entrySet();
return countries.get(data.getCountryCode());
}
@Override
public String getName() {
return data.getContactLastName() + ", " + data.getContactFirstName();
}
@Override
public String getPhoneNumber() {
String codeNumber = String.valueOf(data.getCountryPhoneCode());
String phoneNumber = String.valueOf(data.getPhoneNumber());
String result = "";
StringBuilder sbCode = new StringBuilder(phoneNumber);
while (phoneNumber.length() < 10) {
phoneNumber = sbCode.insert(0, "0").toString();
}
if (phoneNumber.length() == 10) {
StringBuilder sbResult = new StringBuilder(result);
sbResult.insert(0, "+").append(codeNumber);
sbResult.insert(2, "(").append(phoneNumber, 0, 3).append(")");
sbResult.append(phoneNumber, 3, 6).append("-");
sbResult.append(phoneNumber, 6, 8).append("-");
result = sbResult.append(phoneNumber, 8, 10).toString();
}
return result;
}
}
public static interface IncomeData {
String getCountryCode(); // Na przykład: US
String getCompany(); // Na przykład: CodeGym Ltd.
String getContactFirstName(); // Na przykład: John
String getContactLastName(); // Na przykład: Smith
int getCountryPhoneCode(); // Na przykład: 1
int getPhoneNumber(); // Na przykład: 991234567
}
public static interface Customer {
String getCompanyName(); // Na przykład: CodeGym Ltd.
String getCountryName(); // Na przykład: Stany Zjednoczone
}
public static interface Contact {
String getName(); // Na przykład: Smith, John
String getPhoneNumber(); // Na przykład: +1(099)123-45-67
}
}