2015-07-11 4 views
4

Для моего задания я создал класс под названием «Агентство», в котором будут храниться данные о агентствах талантов, и я создал необходимые атрибуты. Мне также был предоставлен файл данных, который мне нужно будет прочитать. Но сначала я должен проверить свой класс. Я могу использовать getter и seters отлично, чтобы отобразить мой желаемый результат, но теперь я хочу создать новый экземпляр объекта Agency и добавить детали их, но я получаю сообщение об ошибке, не найдя подходящего конструктора. Я сопоставил настройки с моим конструктором или, по крайней мере, не вижу, где моя ошибка. Любая помощь спасибо.Java не найден подходящий конструктор

public class Agency { 

    //Attributes for class Agency 

    private String name; 
    private String[] address; 
    private String[] adminStaff; 
    private int phoneNumber; 
    private String type; 

    /** 
    *Constructor that creates object Agency 
    */ 
    public Agency() { 

    } 

    /** 
    * Constructor that creates object Agency with values 
    * @param name 
    * @param address 
    * @param adminStaff 
    * @param phoneNumber 
    * @param type 
    */ 
    public Agency(String name, String[] address, String[] adminStaff, int phoneNumber, String type) { 
     this.name = name; 
     this.address = address; 
     this.adminStaff = adminStaff; 
     this.phoneNumber = phoneNumber; 
     this.type = type; 
    } 

    /** 
    * 
    * @return 
    */ 
    public String getName() { 
     return name; 
    } 

    /** 
    * 
    * @param name 
    */ 
    public void setName(String name) { 
     this.name = name; 
    } 


    /** 
    * 
    * @return 
    */ 
    public String[] getAddress() { 
     return address; 
    } 

    /** 
    * 
    * @return 
    */ 
    public String[] getAdminStaff() { 
     return adminStaff; 
    } 

    /** 
    * 
    * @return 
    */ 
    public int getPhoneNumber() { 
     return phoneNumber; 
    } 

    /** 
    * 
    * @param phoneNumber 
    */ 
    public void setPhoneNumber(int phoneNumber) { 
     this.phoneNumber = phoneNumber; 
    } 

    /** 
    * 
    * @return 
    */ 
    public String getType() { 
     return type; 
    } 

    /** 
    * 
    * @param type 
    */ 
    public void setType(String type) { 
     this.type = type; 
    } 

    private String getArrayAsString(String[] a) { 
     String result = ""; 
     /*for(int i = 0; i<a.length; i++) 
     { 
      result += a[i] +" "; 
     }*/ 
     for(String s: a) 
     { 
      result += s + " "; 
     } 
     result = result.trim(); 
     return result; 
    } 

    private String[] getStringAsArray(String a) { 
     String[] result = a.split(":"); 
     return result; 
    } 

    public void setAddress(String Address) { 
     this.address = getStringAsArray(Address); 
    } 

    public void setAddress(String[] Address) { 
     this.address = Address; 
    } 

    public String getAddressAsString() { 
     return getArrayAsString(address); 
    } 

    public void setAdminStaff(String adminStaff) { 
     this.adminStaff = getStringAsArray(adminStaff); 
    } 

    public void setAdminStaff(String[] adminStaff) { 
     this.adminStaff = adminStaff; 
    } 

    public String getAdminStaffAsString() { 
     return getArrayAsString(adminStaff); 
    } 

    @Override 
    public String toString(){ 
      return name +"\t"+ getAddressAsString() +"\t"+ 
        getAdminStaffAsString() +"\t"+ phoneNumber +"\t"+ type + "\n"; 
    } 
} 

Мой главный класс

public class AgencyTest { 

public static void main(String[] args) {  
    /*a.setName("Potters Talent Agency"); 
    a.setAddress("126-182 Ashwood Road:Potters Bar:Hertfordshire EN6 2:UK"); 
    a.setAdminStaff("Megan Speagle:Daron Spilman"); 
    a.setPhoneNumber(2598052); 
    a.setType("All"); 
    System.out.println(a.getName()); 
    System.out.println(a.getAddressAsString()); 
    System.out.println(a.getAdminStaffAsString()); 
    System.out.println(a.getPhoneNumber()); 
    System.out.println(a.getType());*/ 
    Agency a = new Agency("Potters Talent Agency, 126-182 Ashwood Rd: Potters Bar: Hertfordshire EN6 2: UK, " 
      + "Megan Speegle:Daron Spilman:Leonel Striegel:Hubert Tesoro:Nathanial Pompey, 2598052, All"); 
    System.out.println(a); 
} 

} закомментирована линии работают, но если я пытаюсь сделать все это от «Агентства а = новое агентство()» линия не будет работать.

plz help am новичок, и я, вероятно, использую плохую терминологию, поэтому не уверен, имеет ли смысл то, что я пытаюсь сделать.

Ok добавил новый конструктор, который принимает его как одну строку, но получает ошибку с целым значением для номера звонящего. Вот код:

`public Agency(String csvString) { 
     String[] attributes =csvString.split(","); 
     int i = 0; 
     for(String s : attributes) 
     { 
      switch(i) 
      { 
       case 0: 
        this.name = s; 
        break; 
       case 1: 
        this.address = getStringAsArray(s); 
        break; 
       case 2: 
        this.adminStaff = getStringAsArray(s); 
        break; 
       case 3: 
        this.phoneNumber = getIntAsString(s); 
        break; 
       case 4: 
        this.type = s; 
        break; 
      } 

Я попытался преобразовать его в строку, но не похоже на работу. Подробнее Кода:

private String getIntAsString(int a){ 
    String result = Integer.toString(a); 
    return result; 
} 

public String getPhoneNumberAsString() { 
    return getIntAsString(phoneNumber); 
} 
public void setPhoneNumber(int phoneNumber){ 
    this.phoneNumber = phoneNumber; 
} 
     i++; 
    }` 

ответ

10
Agency a = new Agency("Potters Talent Agency ... EN6 2: UK, " 
     + "Megan Speegle:Daron ... 2598052, All"); 

пытается вызвать конструктор с одной строкой и нет такого конструктора не существует.

Вам необходимо либо предоставить такой конструктор (который разделит строку на свои поля компонента), либо разделит строку самостоятельно и вызовет текущий конструктор с этими полями компонентов.

+0

Спасибо Ok я создал конструктор, чтобы принять его в качестве одной строки, но не могу показаться, чтобы заставить его принять целое значение. Я использовал Integer.toString (i). Но все равно получите ошибку. – omzy

1

См ошибка в

Agency a = new Agency("Potters Talent Agency, 126-182 Ashwood Rd: Potters Bar: Hertfordshire EN6 2: UK, " 
      + "Megan Speegle:Daron Spilman:Leonel Striegel:Hubert Tesoro:Nathanial Pompey, 2598052, All"); 

Вы просто передавая одну строку в конструктор и нет конструктора в классе, который принимает только строку в качестве параметра. Правильно формируйте ваши параметры.

Попробуйте создать объект таким образом

String myAddress[] = "BLR India".split(" "); 
    String myAdmin[] = "my admin array".split(" "); 
    Agency a = new Agency("MyName", myAddress, myAdmin, 1235678, "myType"); 
4

В строке

Agency a = new Agency("Potters [...] All"); 

вы в основном вызвать конструктор, который принимает единственной строки в качестве аргумента. Поэтому компилятор ищет такой конструктор:

Agency(String properties) { ... } 

Этот конструктор не существует. Вместо этого у вас есть конструктор

Agency(String name, String[] address, String[] adminStaff, int phoneNumber, String type) { ... } 

который принимает аргументы отдельно.Таким образом, вы должны назвать это так:

Agency a = new Agency(
     "Potters Talent Agency", 
     new String[] {"126-182 Ashwood Rd", "Potters Bar", "Hertfordshire EN6 2", "UK"}, 
     new String[] {"Megan Speegle", "Daron Spilman", "Leonel Striegel", "Hubert Tesoro", "Nathanial Pompey"}, 
     2598052, 
     "All" 
); 

Вы могли - в качестве альтернативы - предоставить конструктор, принимающий одну строку, которая затем делает некоторые строки магии разборку частей. Это несколько сложный и подверженный ошибкам, поэтому я бы посоветовал не делать этого.

0

Вы используете неправильный конструктор. Что у вас сейчас есть

Agency a = new Agency("Potters Talent Agency, 126-182 Ashwood Rd: Potters Bar: Hertfordshire EN6 2: UK, " 
      + "Megan Speegle:Daron Spilman:Leonel Striegel:Hubert Tesoro:Nathanial Pompey, 2598052, All"); 

Таким образом, он будет ожидать конструктора с одним строковым аргументом, которого у вас нет.

Вы должны сделать что-то вроде

List<String> addr = new ArrayList<String>(); 
    addr.add("126-182 Ashwood Rd"); 
    addr.add("Potters bar"); 
    addr.add("Hertfordshire EN6 2"); 
    addr.add("UK"); 
    List<String> adminStaff = new ArrayList<String>(); 
    adminStaff.add("Megan Speegle"); 
    adminStaff.add("Daron Spilman"); 
    agency a = new Agency("Potters Talent Agency", addr.toArray(), adminStaff.toArray(),2598052, "All"); 
Смежные вопросы