当前位置: 首页 > 知识库问答 >
问题:

不兼容的电话号码返回类型

强化
2023-03-14

我应该如何更改getPhoneNumber内部的代码才能正确工作,有什么想法吗?这是我最后应该得到的+38(050)123-45-67。38是国家代码,这是电话号码501234567,但你必须在数字开头放零才能得到10个类似于这里的数字(>0<50)

public String getPhoneNumber()
        {
           return String.format("+%d(%2$s)%3$s-%4$s-%5$s", 38,
                    String.format("%010d", 501234567).substring(0, 3),
                    String.format("%010d", 501234567).substring(3, 6),
                    String.format("%010d", 501234567).substring(6, 8),
                    String.format("%010d", 501234567).substring(8));

        }

完整的代码。

public class Solution {
    public static Map<String,String> countries = new HashMap<String,String>();

    public static class IncomeDataAdapter implements Customer, Contact, IncomeData
    {
        IncomeData incomeData;

        public IncomeDataAdapter(IncomeData incomeData)
        {
            countries.put("UA","Ukraine");
            countries.put("RU", "Russia");
            countries.put("CA", "Canada");
            this.incomeData = incomeData;
        }

        @Override
        public String getName()
        {
            return incomeData.getContactLastName()+ incomeData.getContactFirstName();
        }

        @Override
        public String getPhoneNumber()
        {
           return String.format("+%d(%2$s)%3$s-%4$s-%5$s", 38,
                    String.format("%010d", 501234567).substring(0, 3),
                    String.format("%010d", 501234567).substring(3, 6),
                    String.format("%010d", 501234567).substring(6, 8),
                    String.format("%010d", 501234567).substring(8));

        }




        @Override
        public String getCompanyName()
        {
            return incomeData.getCompany();
        }

        @Override
        public String getCountryName()
        {
            return countries.get(incomeData.getCountryCode());
        }

        @Override
        public String getContactFirstName()
        {
            return "Ivan";
        }

        public IncomeData getIncomeData()
        {
            return incomeData;
        }

        @Override
        public String getCountryCode()
        {
            return "UA";
        }



        @Override
        public String getCompany()
        {
            return "JavaRush Ltd.";
        }

        @Override
        public String getContactLastName()
        {
            return "Ivanov";
        }

        @Override
        public int getCountryPhoneCode()
        {
            return 38;
        }
    }

    public static interface IncomeData {
        String getCountryCode();        
        String getCompany();            
        String getContactFirstName();  
        String getContactLastName();    
        int getCountryPhoneCode();     
        void getPhoneNumber();          
    }

    public static interface Customer {
        String getCompanyName();        
        String getCountryName();       
    }

    public static interface Contact {
        String getName();               
        String getPhoneNumber();        
    }
}

共有1个答案

穆文斌
2023-03-14

您的IncomeDataContact接口都有一个GetPhoneNumber方法。一个声明void的返回类型,而另一个声明string的返回类型。

您试图用IncomeDataAdapter类实现这两个接口。通过声明重写的方法是

@Override
public String getPhoneNumber()
{

它不满足IncomeData的约定。如果您将其声明为

@Override
public void getPhoneNumber()
{
 类似资料:
  • 我正在codeigniter网络应用程序中处理twiiter数字,登录后我得到了类似这样的响应,你能告诉我如何检索电话号码吗? OAuthoauth_consumer_key="3R2jPNbiZ7lB2zUvDG3VmYIlU",oauth_nonce="773391896567812097-wGawMEgkxrzRhjCHmgPf5UnWOKWgVFV3R2jPNbiZ7lB2zUvDG3Vm

  • 问题内容: 我正在学习Java。我试图运行代码,但出现此错误:。它向我显示错误的代码部分。 为什么会这样呢? 问题答案: 这是因为在类中不能有两个具有相同名称但返回类型不同的方法。 子类不能使用与返回类型不同的超类中已经存在的方法相同的名称声明方法。 但是,子类可以声明具有与超类相同的签名的方法。我们称此为“覆盖”。 你需要这个 要么 一个好的做法是通过注释标记覆盖的方法:

  • 问题内容: 当我尝试编译时,它给了我错误 我应该如何解决这个问题? 问题答案: 该错误是由于以下事实导致的:调用将是不明确的- 应该调用两种方法中的哪一种?从JLS§8.4.2开始: 在类中声明两个具有重写等效签名的方法是编译时错误。 方法的返回类型不是其签名的一部分,因此根据上述说明,您将收到错误。 假设您不能简单地重命名冲突的方法,在这种情况下就不能使用继承,并且需要使用诸如compositi

  • 我试图通过对象属性NodeID排序一个对象,这是一个长类型。 有什么方法可以通过对象属性NodeID对PeerNode的ArrayList进行排序吗??