2016-11-17 4 views
-3

Недавно я начал работать над программированием на Java для школы, и для недавнего упражнения я столкнулся с некоторыми проблемами.Создание объектов в другом классе в java

В настоящее время у меня есть телефон объекта, который может быть либо мобильным номером, либо стационарным. Теперь я хочу создать другой класс, содержащий контактные данные. В этих контактных данных должны быть два телефона: один номер мобильного телефона (gsm) и один стационарный номер (телефон). Номер класса объявлен в классе.

Мой вопрос заключается в том, как изменить инициализацию класса ContactDetails, чтобы принять два новых объекта телефона. И что это именно то, что я делаю не так.

благодарит заранее!

public class Telephone { 
    private String sort; 
    public String number; 

    public Telephone(String sort, String number) { 
     this.sort = sort; 
     this.number = number; 
    } 

    public String getSort() { 
     return sort; 
    } 

    public String getNumber() { 
     return number; 
    } 

    public boolean isValidnumber(){ 
     if(number.startsWith("0")) { 
      if (getSort() == "landline" && number.length() == 9) { 
       return true; 
      } else if (getSort() == "mobile" && number.length() == 10) { 
       return true; 
      } else return false; 
     } 
     else return false; 
    } 
} 

public class ContactDetails { 
    private String eMail; 
    Telephone telephone = new Telephone("landline", Telephone.number); 
    Telephone gsm = new Telephone("mobile", Telephone.number); 

    public ContactDetails(String eMail, Telephone telephone, Telephone gsm){ 
     this.eMail = eMail; 
     this.telephone = telephone; 
     this.gsm = gsm; 
    } 
} 
+4

Что на ваш вопрос именно? – Berger

+2

И в чем ваш вопрос? Есть ли время компиляции или ошибки времени выполнения? – vanje

+0

Нет смысла инициализировать объекты ** Телефон ** вне конструктора ** ContactDetails() **. Также, как это делается, НЕПРАВИЛЬНО. И этот код даже не компилируется. – progyammer

ответ

1

У вас есть две проблемы здесь:

  1. При инициализации Telephone GSM, вы не можете объявить его как Telefoon, так как этот класс не существует

  2. У вас есть для инициализации телефонов с номером String. Telephone.number относится к number Строке объекта Telephone, которого еще нет, поскольку вы только инициализируете Telephone.

Для того, чтобы обе эти работы, изменить 2 инициализаций из Telephone в ContactDetails к чему-то вроде этого:

Telephone telephone = new Telephone("landline", "5555555555"); 
Telephone gsm = new Telephone("mobile", "5555555555"); 
+0

Спасибо за ваш ответ, для второй проблемы: это означает, что я должен просто инициализировать его с помощью случайно выбранной строки? –

+0

@MeesVankaam вы можете инициализировать его любым телефонным номером, который хотите сохранить. Я использовал кучу 5-х, чтобы создать мой, как демонстрацию, но вы можете сохранить любой номер телефона в этой строке. –

Смежные вопросы